Используйте while True и yield: генератор хранит текущее число между обращениями, начиная с 1. Следующее значение получают через next() на том же объекте генератора.
Бесконечный генератор натуральных чисел
Используйте while True и yield: генератор хранит текущее число между обращениями, начиная с 1. Следующее значение получают через next() на том же объекте генератора.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
Условие
Реализуйте функцию‑генератор, которая бесконечно выводит целые числа, начиная с 1. При каждом вызове она должна возвращать следующее значение последовательности без какого‑либо ограничения сверху.
Ответ
Используйте while True и yield: генератор хранит текущее число между обращениями, начиная с 1. Следующее значение получают через next() на том же объекте генератора.
Реализация без верхней границы:
def natural_numbers():
value = 1
while True:
yield value
value += 1
numbers = natural_numbers()
print(next(numbers)) # 1
print(next(numbers)) # 2
Повторный вызов natural_numbers() создаёт новую независимую последовательность, а не продвигает старую. Не преобразовывайте такой генератор в list: он никогда не исчерпается. Количество хранимых объектов постоянно, но размер самого большого целого постепенно увеличивается.