Pythonの yield
は、ジェネレータ関数を定義する際に使用されるキーワードです。ジェネレータ関数は、イテレータを返す特殊な関数で、通常の関数とは異なり、呼び出されると処理を実行し、結果を返すと終了します。
しかし、 yield
キーワードを使用することで、ジェネレータ関数はイテレータを作成し、値を逐次的に生成します。以下に、 yield
を使用したジェネレータ関数の例を示します:
def count_up_to(n):
i = 1
while i <= n:
yield i
i += 1
# ジェネレータ関数を呼び出してイテレータを取得
iterator = count_up_to(5)
# イテレータから値を逐次的に取得
print(next(iterator)) # 1
print(next(iterator)) # 2
print(next(iterator)) # 3
print(next(iterator)) # 4
print(next(iterator)) # 5
# イテレータの末尾に到達するとStopIterationが発生する
# print(next(iterator)) # StopIterationエラー
このように、 yield
は通常、forループと組み合わせて使用されます。以下がその具体例です。
def simple_generator():
yield 1
yield 2
yield 3
for value in simple_generator():
print(value)
上記のコードを実行すると、「1」「2」「3」が順番に出力されます。 simple_generator
関数はジェネレータ関数であり、 yield
を使用して値をひとつずつ生成。forループはジェネレータから値を取得し、全ての値が取り出されるとループが終了します。
以上がPythonの yield
とforループの基本的な使い方です。これらの概念を理解し、活用することで、より効率的なコードを書くことができます。