Back to questions
Junior — Middle
65
Какова роль специальных методов (dunder) в реализации генераторов и их использование в Python?
Answer from AI
sobes.tech AI
В Python специальные методы (dunder methods), такие как __iter__(), __next__(), играют ключевую роль в реализации генераторов и итераторов.
Генераторы — это объекты, которые позволяют итерироваться по последовательности значений, вычисляя их по мере необходимости, а не сразу.
__iter__()возвращает итератор объекта (часто сам объект).__next__()возвращает следующий элемент последовательности или вызывает исключениеStopIteration, когда элементы закончились.
Когда вы создаёте генератор с помощью функции с ключевым словом yield, Python автоматически создает объект генератора с этими методами.
Пример реализации простого итератора с использованием dunder методов:
class CountUpTo:
def __init__(self, max):
self.max = max
self.current = 0
def __iter__(self):
return self
def __next__(self):
if self.current >= self.max:
raise StopIteration
self.current += 1
return self.current
for number in CountUpTo(3):
print(number)
Таким образом, dunder методы обеспечивают протокол итерации, который лежит в основе генераторов и позволяет использовать их в циклах и других конструкциях, работающих с итерируемыми объектами.