Я хочу написать функцию, которая возвращает список функций. Как MWE, здесь моя попытка функции, которая дает три функции, которые добавляют 0, 1 и 2 к входному числу:
def foo():
result = []
for i in range(3):
temp = lambda x: x + i
print(temp(42)) # prints 42, 43, 44
result.append(temp)
return result
for f in foo():
print(f(42)) #prints 44, 44, 44
В отличие от моего ожидания, каждая функция заканчивается использованием последнего значения, полученного i. Я испытал подобное поведение, когда, например, список используется как аргумент функции, но Python фактически использует указатель на список, но здесь я является целым числом, поэтому я не понимаю, что происходит здесь. Я запускаю Python 3.5.