Middle
37
Explique le comportement d'une fonction avec un argument mutable par défaut. Que vont afficher les impressions?
Entreprises à qui on a demandé
Navio
Réponse de l'IA
sobes.tech IA
В Python изменяемые аргументы по умолчанию (например, списки или словари) инициализируются один раз при определении функции, а не при каждом её вызове. Это значит, что если внутри функции вы изменяете такой аргумент, то при последующих вызовах функция будет использовать уже изменённый объект, а не новый.
Пример:
def func(a, my_list=[]):
my_list.append(a)
print(my_list)
func(1) # Выведет: [1]
func(2) # Выведет: [1, 2]
func(3) # Выведет: [1, 2, 3]
Здесь my_list сохраняет изменения между вызовами, что часто приводит к ошибкам.
Чтобы избежать этого, обычно используют None в качестве значения по умолчанию и внутри функции создают новый объект:
def func(a, my_list=None):
if my_list is None:
my_list = []
my_list.append(a)
print(my_list)
Теперь при каждом вызове создаётся новый список.