1. ホーム 
  2. 備忘録 
  3. Python

ジェネレータ

ジェネレータとは

ジェネレータはイテレータの一種であり、要素を取り出そうとするたびに処理を行い、要素をジェネレートするタイプのものである

イテレータについては別ページにて記載するが、簡単に説明すると要素を反復して取り出すことのできるインターフェースのことである

Python のジェネレータは、関数内にyiledを使用することでジェネレータとして認識される

具体的な書き方について以下に記載する


# Pythonは関数の中に yield があるとジェネレータとして判断する
def greeting():
    yield 'Good morning'
    yield 'Good afternoon'
    yield 'Good night'


# ジェネレータは for文 で回すことができる
for g in greeting():
    print(g)

# next()を使って一個ずつステップを進めることができる
# ただし最後のステップを超えるとエラーが発生するので注意
g = greeting()
print(next(g))  # Good morning
print("@@@@@")
print(next(g))  # Good afternoon
print("@@@@@")
print(next(g))  # Good night
print("@@@@@")
print(next(g))  # StopIteration