Я пытаюсь создать функции внутри цикла:
functions = []
for i in range(3):
def f():
return i
# alternatively: f = lambda: i
functions.append(f)
Проблема в том, что все функции оказываются одинаковыми. Вместо возврата 0, 1 и 2 все три функции возвращают 2:
print([f() for f in functions])
# expected output: [0, 1, 2]
# actual output: [2, 2, 2]
Почему это происходит, и что я должен сделать, чтобы получить 3 разные функции, которые выводят 0, 1 и 2 соответственно?