Я новичок в Python. Моя задача была довольно простой - мне нужен список функций, которые я могу использовать для пакетной работы. Поэтому я поиграл с некоторыми примерами, такими как
fs = [lambda x: x + i for i in xrange(10)]
. Удивительно, но вызов
[f(0) for f in fs]
дал мне результат вроде [9, 9, 9, 9, 9, 9, 9, 9, 9, 9]
. Это было не то, что я ожидал, поскольку я бы хотел, чтобы переменная i
имела разные значения в разных функциях.
Итак, мой вопрос:
Является ли переменная i
в лямбда глобальный или локальный?
Использует ли python то же понятие, что и «закрытие» в javascript? Я имею в виду, что каждая лямбда здесь содержит ссылку на переменную i
или они просто содержат копию значения i
в каждой?
Что мне делать, если я например, в этом случае вывод будет [0, 1, ..... 9]
?