Junior — Middle
111
¿Por qué no se recomienda usar objetos mutables como valores predeterminados en la definición de funciones en Python?
Empresas donde se preguntó
Медси
Respuesta de la IA
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
Так каждый вызов будет работать с новым списком.