Я столкнулся с python поведением, которое я не понимаю.
Вот простой демонстрационный код:
l = []
def ext_and_return_l(ext):
l.append(ext)
return l
extensions = [1, 2, 3, 4]
gen = map(ext_and_return_l, extensions)
Теперь скажите, что я хочу увидеть условия моего генератора, у меня есть варианты.
цикл сначала дает мне то, что я ожидаю:
for i in gen:
print(i)
[1]
[1, 2]
[1, 2, 3]
[1, 2, 3, 4]
с использованием списка вместо повторного запуска демонстрационного кода:
list(gen)
[[1, 2, 3, 4], [1, 2, 3, 4], [1, 2, 3, 4], [1, 2, 3, 4]]
Я полагаю, что это связано с поздним связыванием закрытия функций, но я не понимаю точного механизма в этом случае и был бы признателен за понимание.