ЛАБОРАТОРИЯ / Обучение
Система готова
PYTHON / PARAMETERS

Параметры, *args и **kwargs

25 мин8 ЗАДАНИЙ32 ВОПРОСА В БАНКЕ
01

Что это и зачем

Параметр объявляется в определении, аргумент передаётся при вызове. Python поддерживает позиционные и именованные аргументы и значения по умолчанию.

02

Как это работает

*args собирает лишние позиционные аргументы в tuple, **kwargs — именованные в dict. * при вызове распаковывает iterable, ** — mapping. Символ / ограничивает позиционные параметры, * ограничивает именованные.

example.py
def greet(name='Guest'):
    return name
print(greet())
03

Когда применять

Используйте keyword-only параметры для флагов с неочевидным смыслом. Значение None в default позволяет создавать новый изменяемый объект внутри вызова. Документируйте допустимые сочетания аргументов.

04

Границы применения

Значение по умолчанию вычисляется при def один раз. Список в default разделяется всеми вызовами. Избыточные *args/**kwargs могут скрыть настоящий контракт функции.

05

Ошибки и лучшие практики

Один параметр нельзя передать одновременно позиционно и по имени. Позиционные аргументы идут до обычных именованных. При ** ключи должны быть строками.

Понятна идея? Теперь проверим её в действии.