def gensquares(N):
for number in range(N):
if number < N:
print(f'yielding number: {number}')
yield number**2
for x in gensquares(10):
print('yielded squared number: ', x)
>> yielding number: 0
>> yielded squared number: 0
>> yielding number: 1
>> yielded squared number: 1
>> yielding number: 2
>> yielded squared number: 4
>> yielding number: 3
>> yielded squared number: 9
>> yielding number: 4
>> yielded squared number: 16
>> yielding number: 5
>> yielded squared number: 25
>> yielding number: 6
>> yielded squared number: 36
>> yielding number: 7
>> yielded squared number: 49
>> yielding number: 8
>> yielded squared number: 64
>> yielding number: 9
>> yielded squared number: 81