Junior — Middle
84
Почему не рекомендуется использовать изменяемые объекты как значения по умолчанию в определении функций в Python?
Компании, где спрашивали
Медси
Ответ от нейросети
sobes.tech AI
В Python значения по умолчанию для параметров функции вычисляются один раз при определении функции, а не при каждом вызове. Если использовать изменяемый объект (например, список или словарь) в качестве значения по умолчанию, то все вызовы функции будут использовать один и тот же объект. Это может привести к неожиданным побочным эффектам, когда изменения в этом объекте сохраняются между вызовами.
Пример:
def add_item(item, items=[]):
items.append(item)
return items
print(add_item(1)) # [1]
print(add_item(2)) # [1, 2] — ожидаемо? Нет!
Правильный способ — использовать None и создавать новый объект внутри функции:
def add_item(item, items=None):
if items is None:
items = []
items.append(item)
return items
Так каждый вызов будет работать с новым списком.