Я изо всех сил пытаюсь сделать работу лямбда. Здесь приведен пример кода, но он хорошо показывает мою проблему.Почему мои лямбды не работают?
lambdas = list()
for i in range(5):
lambdas.append(lambda x:i*i*x)
print lambdas[0](1)
print lambdas[2](1)
Это дает мне 16, но я ожидаю, что у меня будет другое значение для разных лямбда. Почему происходит!
«Scoping in Python лексический. Закрытие всегда будет помнить имя и область действия переменной, а не объект, на который она указывает». http://stackoverflow.com/questions/2295290/what-do-lambda-function-closures-capture-in-python. Ваша лямбда фиксирует имя 'i', а не * значение объекта *, на которое ссылается' i'. – Shashank