Создание функций (или лямбда-выражений) в цикле (или понимании) ⇐ Python

Программы на Python
Anonymous
Создание функций (или лямбда-выражений) в цикле (или понимании)

Сообщение Anonymous »

Я пытаюсь создать функции внутри цикла:

Код: Выделить всё

functions = []

for i in range(3):
def f():
return i
functions.append(f)
Альтернативный вариант с лямбдой:

Код: Выделить всё

functions = []

for i in range(3):
functions.append(lambda: i)
Проблема в том, что все функции оказываются одинаковыми. Вместо возврата 0, 1 и 2 все три функции возвращают 2:

Код: Выделить всё

print([f() for f in functions])
  • Ожидаемый результат: [0, 1, 2]
  • Фактический результат: [2, 2, 2]
Почему это происходит и что мне следует сделать, чтобы получить три разные функции, выводящие 0, 1 и 2 соответственно?


Подробнее здесь: https://stackoverflow.com/questions/343 ... prehension

Вернуться в «Python»