ジェネレータの定義
ジェネレータはイテレータを作成するための特別な関数です。(ジェネレータによって作成されたイテレータをジェネレータイテレータとも呼びます。)
yieldによるジェネレータ実装
from typing import Generator def simple_generator() -> Generator[int, None, None]: yield 1 yield 2 yield 3
Generator[int, None, None]: ジェネレータの型アノテーションです。
特殊メソッドでのジェネレータの実装
ジェネレータは iter と next メソッドを特殊メソッドとして持っています。これらを実装することで、ジェネレータオブジェクトを作成できます:
from typing import Generator class CountdownGenerator: def __init__(self, start: int) -> None: self.start = start def __iter__(self) -> Generator[int, None, None]: return self def __next__(self) -> int: if self.start > 0: result = self.start self.start -= 1 return result else: raise StopIteration