У меня есть две функции, которые возвращают список функций. Функции принимают число 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?