TGViewer
Python tests Python tests @python_testit · 6.9K subscribers
Post #1183 1.32K
🐍 Python-задача: что выведет этот код и почему?


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


📌 Теперь каждый вызов будет работать с новым списком.
More from @python_testit
  1. Sep 6, 2026🐍 Python считает эти даты равными. Хотя между ними целый час В ночь перевода часов время…
  2. Aug 14, 2026Post #1269
  3. Aug 14, 2026photo post
  4. Aug 14, 2026🔥 Python + AI без игрушечных демок. Курс для тех, кто хочет собирать рабочие системы. Ste…
  5. Jul 22, 2026Post #1266
  6. Jul 22, 2026photo post
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →