Crear funciones en un bucle
Estoy tratando de crear funciones dentro de un bucle:
functions = []
for i in range(3):
def f():
return i
functions.append(f)
El problema es que todas las funciones terminan siendo las mismas. En lugar de devolver 0, 1 y 2, las tres funciones devuelven 2:
print([f() for f in functions])
# expected output: [0, 1, 2]
# actual output: [2, 2, 2]
¿Por qué sucede esto y qué debo hacer para obtener 3 funciones diferentes que generan 0, 1 y 2 respectivamente?