Назад к вопросам
Middle
1
Объясните поведение функции с mutable default argument (изменяемым аргументом по умолчанию). Что выведут принты?
Компании, где спрашивали
Navio
Ответ от нейросети
sobes.tech AI
В 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)
Теперь при каждом вызове создаётся новый список.