Back to questions
СБЕР
Senior
2
Что выведет код с изменяемым объектом по умолчанию в аргументах функции (mutable default argument)?
Companies where asked
Answer from AI
sobes.tech AI
В Python, если в качестве значения аргумента функции по умолчанию используется изменяемый объект (например, список или словарь), этот объект создаётся один раз при определении функции и используется во всех последующих вызовах без нового создания. В результате изменения этого объекта внутри функции сохраняются между вызовами.
Пример:
def append_to_list(value, my_list=[]):
my_list.append(value)
return my_list
print(append_to_list(1)) # Выведет: [1]
print(append_to_list(2)) # Выведет: [1, 2]
print(append_to_list(3)) # Выведет: [1, 2, 3]
Здесь список my_list не создаётся заново при каждом вызове, а используется один и тот же объект, поэтому элементы накапливаются. Чтобы избежать этого, обычно используют значение по умолчанию None и внутри функции создают новый объект:
def append_to_list(value, my_list=None):
if my_list is None:
my_list = []
my_list.append(value)
return my_list