У меня есть простая программа, которую я использую, чтобы понять, как работают генераторы / yeild.
def learn_yield(numbers):
for i in numbers:
yield (i*i)
numbers = [5]
sq = learn_yield(numbers)
numbers.append(6)
for i in sq:
print (i)
Здесь мое понимание неясно:
Метод добавления вызывается после вызова функции learn_yield. Я ожидал бы вывод print (i) как 25, а не
25 36
Как именно число 6 было отправлено в функцию?
Если я переместу numbers.append (6) к циклу for, то получу поведение, которое, я думаю, должно произойти в первую очередь. Означает ли это, что вызов функции выполняется снова, когда цикл повторяется?
Система - ПК, Windows 10 Python - 3,7 Sublime Text