Я не могу понять, как функция-генератор с yield может мне помочь. Я могу просто «вернуть» список, когда мне нужно. Например, функция:
def sqr(x):
for a in range(1, x+1):
yield a**2
Я могу сделать, например, что-то вроде этого: sq_gen = sqr(20)
и есть объект-генератор. Существует также метод next, который возвращает каждый новый элемент этого объекта, но ПОЧЕМУ и по какой причине?