Встречается на собеседованиях • сегодня

Почему не стоит делать изменяемый аргумент функции по умолчанию в Python

В Python изменяемые аргументы по умолчанию (например, списки или словари) создаются один раз при определении функции, а не при каждом вызове. Это может привести к неожиданному поведению, когда изменения в одном вызове влияют на последующие.

Пример проблемы:

python
def append_to_list(value, lst=[]):
    lst.append(value)
    return lst

print(append_to_list(1))  # [1]
print(append_to_list(2))  # [1, 2] - а ожидали [2]

Правильный подход - использовать None и создавать изменяемый объект внутри функции:

python
def append_to_list(value, lst=None):
    if lst is None:
        lst = []
    lst.append(value)
    return lst
Sophi
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
Попробовать бесплатноArrow

Следующий вопрос

Это единственный вопрос по вашему фильтру

как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы