yield это как return, только когда мы доходим до yield у нас останавливается выполнение функции на данном месте, пока мы снова не вызовем метод next
def test(): for i in range(4): yield i a = test() next(a) # 0 next(a) # 1