*args и **kwargs простыми словами
Звёздочки в определении функции позволяют принимать сколько угодно аргументов. Разберём, что значат *args и **kwargs.
*args — любое число значений
Параметр со звёздочкой собирает все переданные позиционные аргументы в кортеж. Имя может быть любым, но по традиции пишут args. Удобно, когда заранее не знаешь, сколько значений придёт.
def summa(*args):
return sum(args)
print(summa(1, 2, 3)) # 6
**kwargs — любые именованные
Две звёздочки собирают именованные аргументы (name=value) в словарь. По традиции — kwargs. Так функция может принять произвольный набор настроек по именам.
Зачем нужны
Они делают функции гибкими: обёртки, которые передают аргументы дальше, функции с переменным числом входов. Новичку писать их часто не придётся, но встречаться в чужом коде и документации будут постоянно — полезно узнавать.
Частые вопросы
Обязательно ли имена args и kwargs? Нет, важны звёздочки; имена — традиция.
Что внутри args и kwargs? args — кортеж значений, kwargs — словарь пар имя-значение.
Начать игру бесплатно