Создание функций в цикле

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

functions = []

for i in range(3):
    def f():
        return 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 соответственно?

Ответы на вопрос(2)

Ваш ответ на вопрос