# generator_02_countdown.py
def countdown(n: int):
while n > 0:
yield n
n -= 1
for num in countdown(5):
print(num)
Пример 3. Бесконечный генератор с остановкой
# generator_03_infinite.py
def infinite_counter(start: int = 1):
while True:
yield start
start += 1
counter = infinite_counter()
for _ in range(10):
print(next(counter))
Пример 4. Распределение задач
# generator_04_tasks.py
def task_assigner(employees):
while True:
for employee in employees:
yield employee
team = ["Alice", "Bob", "Charlie"]
assigner = task_assigner(team)
for i in range(7):
print(f"Task {i + 1} assigned to: {next(assigner)}")
Пример 5. close()
# generator_05_close.py
def sensor_data(data):
for value in data:
yield value
sensor = sensor_data([10, 20, 30, 40, 50])
for value in sensor:
print(value)
if value >= 30:
sensor.close()
break
Пример 6. yield from
# generator_06_yield_from.py
def flatten(nested):
for item in nested:
if isinstance(item, list):
yield from flatten(item)
else:
yield item
print(list(flatten([1, [2, [3, 4]], 5]))) # [1, 2, 3, 4, 5]