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

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

Использование пустого списка в качестве аргумента по умолчанию может привести к неожиданному поведению, так как список — это изменяемый (mutable) объект. Он создаётся только один раз при определении функции и используется для всех вызовов. Если функция модифицирует этот список, изменения сохранятся между вызовами.

python
def append_to(item, lst=[]):
    lst.append(item)
    return lst

print(append_to(1))  # [1]
print(append_to(2))  # [1, 2] - неожиданно!

Вместо этого используйте None и создавайте список внутри функции:

python
def append_to(item, lst=None):
    if lst is None:
        lst = []
    lst.append(item)
    return lst

Это гарантирует, что каждый вызов получит новый список.

Sophi
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
Попробовать бесплатноArrow

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

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

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