TGViewer
Python RU Python RU @pro_python_code · 12.4K subscribers
Post #1781 2.15K
🐍 Задача по Python: Ловушка замыканий

Что выведет следующий код?


def create_funcs():
funcs = []
for i in range(3):
def f():
return i
funcs.append(f)
return funcs

for func in create_funcs():
print(func())


Варианты ответа:
A)

1
2


B)

2
2


C)

0
0


D) Ошибка выполнения


---

✅ Правильный ответ: B

Почему:
Это классическая late binding: функция
f() не сохраняет значение i на момент создания, а берёт его из текущей области видимости при вызове.
К моменту вызова
i == 2 (последнее значение в range(3)), поэтому все три функции возвращают 2.

Чтобы избежать этого — можно использовать аргументы по умолчанию:
def f(i=i): return i
  • 👍 9
  • ❤ 2
  • 🥰 1
More from @pro_python_code
  1. Sep 22, 202610 агентов Claude теоретически обошли алгоритм Дейкстры В Vals AI запустили 10 агентов Cla…
  2. Sep 22, 2026🌟 Prism ML собрала тернарную версию Qwen3.8-27B Bonsai 2 27B - сжатая Qwen3.8-27B, котора…
  3. Sep 21, 2026Kubernetes NodeLocal DNSCache: ускоряем DNS-запросы 🚀 Без NodeLocal DNSCache DNS-запрос о…
  4. Sep 13, 2026🔥 Один из лучших обучающих курсов на StepiK по SQL SQL можно знать годами и всё равно тер…
  5. Sep 11, 2026⚡️ DeepSeek открыла веса V4.1-Flash DeepSeek выложила свежайшую DeepSeek-V4.1-Flash, мульт…
  6. Sep 11, 2026Команды ждут тебя на треке программирование роботов на МТС True Tech Champ 2026 — всеросси…
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 →