def append_to_list(value, my_list=[]):
my_list.append(value)
return my_list
print(append_to_list(1))
print(append_to_list(2))
print(append_to_list(3))
🔍 Варианты:
• a)
[1], [2], [3] • b)
[1], [1, 2], [1, 2, 3] • c) Ошибка исполнения
• d)
[1], [2], [3] — но в разных объектах💡 Разбор:
Аргумент
my_list=[] — изменяемый объект, созданный один раз при компиляции функции, а не каждый раз при вызове. Поэтому:- Первый вызов:
my_list = [] → добавили 1 → [1] - Второй вызов: та же
my_list, теперь [1] → добавили 2 → [1, 2] - Третий: тот же список →
[1, 2, 3]✅ Правильный ответ: b) `[1]`, `[1, 2]`, `[1, 2, 3]`
🧠 Вывод: никогда не используй изменяемые значения (`list`,
dict, `set`) в аргументах по умолчанию. Это одна из самых частых ловушек в Python.🛠️ Правильный способ:
def append_to_list(value, my_list=None):
if my_list is None:
my_list = []
my_list.append(value)
return my_list
📌 Теперь каждый вызов будет работать с новым списком.