Функция генератора определяется как обычная функция, но всякий раз, когда ей нужно сгенерировать значение, она делает это с помощью ключевого слова yield, а не return. Его главное преимущество заключается в том, что он позволяет своему коду генерировать серии значений во времени, а не вычислять их сразу и отправлять обратно как список. Например
# A Python program to generate squares from 1
# to 100 using yield and therefore generator
# An infinite generator function that prints
# next square number. It starts with 1
def nextSquare():
i = 1;
# An Infinite loop to generate squares
while True:
yield i*i
i += 1 # Next execution resumes
# from this point
# Driver code to test above generator
# function
for num in nextSquare():
if num > 100:
break
print(num)
Return отправляет указанное значение обратно своему вызывающему, тогда как Yield может генерировать последовательность значений. Мы должны использовать yield, когда хотим перебрать последовательность, но не хотим сохранять всю последовательность в памяти.