TGViewer
Python вопросы с собеседований Python вопросы с собеседований @python_job_interview · 24.9K subscribers
Post #1500 2.07K
Что выведет этот код?


funcs = []

for i in range(3):
funcs.append(lambda: i)

print([f() for f in funcs])


Многие думают:


[0, 1, 2]


Но Python выведет:


[2, 2, 2]


Почему?

`lambda` не запоминает значение `i` в момент создания.

Она запоминает саму переменную.

Когда цикл закончился, `i` уже равно `2`.

Поэтому все функции смотрят на одно и то же последнее значение.

Правильный фикс:

```python
funcs = []

for i in range(3):
funcs.append(lambda i=i: i)

print([f() for f in funcs])
```

Теперь будет:

```python
[0, 1, 2]
```

Хитрость простая:
если создаёшь функцию в цикле — фиксируй значение через аргумент по умолчанию.
  • 👍 14
  • ❤ 2
  • 🔥 1
More from @python_job_interview
  1. Sep 19, 2026✔️ Кто подключился к вашей сети? NetAlertX обнаруживает устройства и уведомляет об изменен…
  2. Sep 18, 2026✔️ QuiverAI выпустила обновление генератора векторной графики Во второе поколение семейств…
  3. Sep 17, 2026📚 Бесплатная книга по математике для Computer Science и Machine Learning - более 2200 стр…
  4. Sep 15, 2026🐍 Python: как найти изменённое поле во вложенном словаре Сравнение before == after покаже…
  5. Sep 15, 2026🔥 Один из лучших обучающих курсов на StepiK по SQL SQL можно знать годами и всё равно тер…
  6. Sep 13, 2026🐍 Python: type(x) == str или isinstance(x, str)? На первый взгляд разницы почти нет. Но о…
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 →