Я наткнулся на такой код:
def func(tree):
nodes = tree
for node in nodes:
yield node
nodes += [42]
gen = func([-42, 3, 1, 4, 159])
for i in range(10):
print(next(gen))
Имеет ли этот код неопределенное поведение?
В частности, делает:
for node in nodes:
yield node
nodes += [42]
показать неопределенное поведение?
Я знаю это:
for node in nodes:
# yield node
nodes += [42]
может привести к неожиданному поведению, поскольку переменная, которую мы итерируем (nodes
), обновляется в цикле for.