Junior — Middle
81
Quels problèmes potentiels peuvent survenir lors de l'utilisation d'objets mutables comme valeurs par défaut des arguments dans les fonctions Python?
Réponse de l'IA
sobes.tech IA
В Python значения аргументов по умолчанию вычисляются один раз при определении функции, а не при каждом вызове. Если в качестве значения по умолчанию используется изменяемый объект (например, список, словарь или множество), то все вызовы функции будут использовать один и тот же объект. Это может привести к неожиданным побочным эффектам, например, если внутри функции изменять этот объект, изменения сохранятся между вызовами.
Пример:
def add_item(item, items=[]):
items.append(item)
return items
print(add_item(1)) # Выведет: [1]
print(add_item(2)) # Выведет: [1, 2], а не [2]
Чтобы избежать этой проблемы, обычно используют значение по умолчанию None и внутри функции создают новый объект:
def add_item(item, items=None):
if items is None:
items = []
items.append(item)
return items
Таким образом, каждый вызов функции будет работать с новым объектом.