Аргументы по умолчанию используются, когда значение не передается во время вызова. Они оцениваются один раз при определении функции.
Основная проблема — изменяемое значение по умолчанию.
Пример
def add_item(item: int, bucket: list[int] | None = None) -> list[int]:
if bucket is None:
bucket = []
bucket.append(item)
return bucket
Разбор
Суммируя:
- Значения по умолчанию удобны для стабильных значений.
- Изменяемое значение по умолчанию может накапливать состояние между вызовами.
- Безопасный шаблон —
None плюс инициализация внутри функции.
Итог
Аргументы по умолчанию используются, когда значение не передается во время вызова.