Возможно, вы захотите превратить свою функцию в генератор, используя ключевое слово yield
вместо return
. Таким образом, завершив цикл с помощью yield MSG
, ваша функция сгенерирует последовательность сообщений, по одному на каждую итерацию в цикле.
Когда ваш генератор заканчивается, поэтому MSG
равен None
, будет сгенерировано исключение StopIteration
, в результате чего цикл for
завершится, как и ожидалось.
Итак, вы можете структурировать свой код следующим образом:
def callee():
while ...:
elem = ...
yield elem
def caller():
for elem in callee():
...