У меня есть две функции, которые возвращают список функций. Функции принимают число x
и добавляют к нему i
. i
- целое число, возрастающее от 0-9.
def test_without_closure():
return [lambda x: x+i for i in range(10)]
def test_with_yield():
for i in range(10):
yield lambda x: x+i
Я бы ожидал, что test_without_closure
вернет список из 10 функций, каждый из которых добавит 9
в x
, так как значение i
равно 9
.
print sum(t(1) for t in test_without_closure()) # prints 100
Я ожидал, что test_with_yield
также будет иметь такое же поведение, но он правильно создает 10 функций.
print sum(t(1) for t in test_with_yield()) # print 55
Мой вопрос заключается в том, дает ли форму в закрытии в Python?