Тёмный

#39. Функции с произвольным числом параметров *args и **kwargs | Python для начинающих 

selfedu
Подписаться 152 тыс.
Просмотров 39 тыс.
50% 1

Обучающий курс: stepik.org/course/100707
Создаем функции с произвольным числом фактических параметров *args и формальных параметров **kwargs. Примеры реализации и вызовов. Комбинирование обычных параметров с этими коллекциями.
Telegram-канал: t.me/python_selfedu

Опубликовано:

 

17 сен 2021

Поделиться:

Ссылка:

Скачать:

Готовим ссылку...

Добавить в:

Мой плейлист
Посмотреть позже
Комментарии : 44   
@Nauty--
@Nauty-- Год назад
*args и **kwargs - специальный синтаксис, позволяющий передавать в функцию переменное количество аргументов.
@denistalko6585
@denistalko6585 2 года назад
Спасибо! Очень жду продолжения курса! У вас прекрасные уроки!
@user-ym3yt1uq7s
@user-ym3yt1uq7s Год назад
Очень крутой курс, спасибо Вам Сергей за труд)))
@86Blind
@86Blind 2 года назад
Как всегда на высоте, спасибо.
@user-xv7sh6lp7o
@user-xv7sh6lp7o 2 года назад
Отличное видео. Спасибо.
@donfedor007
@donfedor007 2 года назад
Урок огонь!
@vladimirastrelin1719
@vladimirastrelin1719 Год назад
Полезнейший урок....Спасибо
@paleface_brother
@paleface_brother 2 года назад
def greate(*args): print(args) greate(👍, 🙂, 💪)
@andredru4278
@andredru4278 4 месяца назад
Спасибо. Доходчиво!
@olegkomlev
@olegkomlev Год назад
К сожалению, в этом уроке, как и в предыдущем термины "формальный параметр" и "фактический параметр" использованы в значении "параметр ,у которого указано значение по умолчанию" и "параметр ,у которого не указано значение по умолчанию". Это расходится с общепринятой терминологией, в т.ч. с официальной документацией по Питону. Лучше называть такие параметры "опциональный" (или "необязательный) ") и "обязательный", соответственно. А термины "формальный параметр" (formal parameter) и "фактический параметр" (actual parameter) использовать в традиционном смысле.
@illiukhin
@illiukhin 2 года назад
спасибо
@jamjam3337
@jamjam3337 Год назад
спасибо!
@johnysh6480
@johnysh6480 11 месяцев назад
Услышав голос, вспомнил сразу Николай Николаевича Дроздова) Он так же сладко рассказывал в мире животных)))
@user-zc9ni2fp7n
@user-zc9ni2fp7n 2 года назад
Отличный урок, но я не понял зачем вообще **kwargs? Можно же сделать необязательный параметр trim=False
@ibrahimoglu
@ibrahimoglu 2 года назад
👍
@impellergimpeller5133
@impellergimpeller5133 2 года назад
👍👍👍👍👍
@podgorniy.r
@podgorniy.r 2 года назад
Здравствуйте, Сергей! Подскажите, пожалуйста, есть ли у данных операторов (*, **) определенное название?
@selfedu_rus
@selfedu_rus 2 года назад
да, операторы упаковки и распаковки, вроде
@user-bk7tx6vj7h
@user-bk7tx6vj7h 11 месяцев назад
👍👑
@return_1101
@return_1101 2 года назад
Прошлые задачи были по легче. Посмотрим на эти. Но те скрытые тесты просто ад. Я перед кодом уже думаю как сделать его универсальным.
@MsRestartround
@MsRestartround 2 года назад
Но в этом и есть смысл) надо чтобы код был универсальным)
@user-ye1vt4mj1p
@user-ye1vt4mj1p Год назад
работает такая вот конструкция, не будет ли её использование походить на костыль? def os_path(*args, **kwargs): path = kwargs.get('sep', '\\').join(args) return path
@selfedu_rus
@selfedu_rus Год назад
да, красивое решение!
@user-ye1vt4mj1p
@user-ye1vt4mj1p Год назад
@@selfedu_rus спасибо за обратную связь! Ваши уроки мне очень помогают!
@kapwas
@kapwas 2 года назад
Не пойму почему в скрипте две черты в качестве разделителя, а выводится одна. // И /
@selfedu_rus
@selfedu_rus 2 года назад
Поставьте перед строкой буковку r и будет вам счастье ))
@kapwas
@kapwas 2 года назад
@@selfedu_rus я уже все символы попробовал,😁👍
@serbon3905
@serbon3905 Год назад
Потому что черта ключевой символ для указания спец символов, таких как перенос , звук \а и т.д.. То поэтому для указания черты тоже нужно юзать черту с чертой \\. Так же и с кавычками, они ведь указывают границы строки то чтобы кавычки были частью строки нужно писать \"
@montgomery_wilde
@montgomery_wilde 2 года назад
А что значит 'trim'? В официальной документации docs.python поиск не находит ни слова
@selfedu_rus
@selfedu_rus 2 года назад
предполагается использование метода strip() - удаление незначащих символов в начале и в конце строки
@Youtubbber
@Youtubbber 7 месяцев назад
"trim" это просто многозначное слово на английском, от которого, например, произошло слово триммер. Здесь оно используется, скорее, в значении "обрезать по краям" или "привести в порядок".
@SemyonKalyakulin
@SemyonKalyakulin 2 года назад
10:58 4 строка. А можно записать if kwargs.get('trim'): ?
@selfedu_rus
@selfedu_rus 2 года назад
можно, только больше писать ))
@SemyonKalyakulin
@SemyonKalyakulin 2 года назад
@@selfedu_rus а почему больше, строка ж короче получается. Одно условие против 2-х
@selfedu_rus
@selfedu_rus 2 года назад
@@SemyonKalyakulin А, вы имеете в виду, чтобы оба условия заменить? Тогда да, вполне вариант!
@SemyonKalyakulin
@SemyonKalyakulin 2 года назад
@@selfedu_rus да, это и имел в виду. Спасибо!
@asfdasdf9019
@asfdasdf9019 Год назад
а мне непонятно зачем в if 'trim' in....trim берется в кавычки, этож переменная со значением True, потом, args = [x.strip...] а почему тут квадратные скопки а не круглые? ведь на выходе если проверить тип будет полюбому tuple вот питон запутаный в этом плане язык, когда эти чертвы кавычки нужно, когда не нужно, когда круглы когда квадратные....голова пухнет
@eugenedukatta9355
@eugenedukatta9355 8 месяцев назад
И все-таки не понятно, зачем использовать **kwargs Для того чтобы не задавать параметры по умолчанию? Если передадим хотя бы один параметр с неизвестным именем, он попадет в словарь kwargs и функция его не обработает, так как заранее ничего не знает о нем.
@selfedu_rus
@selfedu_rus 8 месяцев назад
Чтобы можно было в функцию передавать произвольное число аргументов со значениями. На практике это часто используют, например, в декораторах.
@eugenedukatta9355
@eugenedukatta9355 8 месяцев назад
@@selfedu_rus "Чтобы можно было в функцию передавать произвольное число аргументов со значениями" - по определению, это понятно. Но, что будет, если в такую функцию передать аргумент Papa = 'Karlo' ?
@selfedu_rus
@selfedu_rus 8 месяцев назад
@@eugenedukatta9355 kwargs - это словарь, соответственно {'papa': 'karlo'}
@eugenedukatta9355
@eugenedukatta9355 8 месяцев назад
@@selfedu_rus Сергей, это естественно понятно. Развивайте мысль дальше. Она многим интересна, судя по комментам. Что далее функция сделает с этой записью из словаря kwargs? Ничего полезного, потому-что заранее об ключе Papa ничего не знает? Здесь в комментах к данному видео спрашивали, зачем использовать **kwargs если можно не использовать, задать параметры со значениями по умолчанию, и при необходимости в вызове функции задавать именные аргументы со значением. Разницы никакой не будет? Мы все-равно не зададим (именных) аргументов больше, чем они прописаны в описании функции со значениями по умолчанию? А если зададим больше как пример имя Papa эти "лишние" аргументы окажутся бесполезны (будут переданы в функцию но не будут обработаны). Понятно, раз данный функционал имеется в языке, значит он для чего-то нужен. Но вы внятно не объяснили для чего.
@gayratsaidakhmedov5451
@gayratsaidakhmedov5451 6 месяцев назад
спасибо
Далее
Fudbol hozir vs avval😂
01:01
Просмотров 478 тыс.
Что за звери *args и **kwargs
38:02
Просмотров 7 тыс.
*Args and **Kwargs in Python
3:49
Просмотров 249 тыс.