Pythonの yield
は、ジェネレータ関数を定義する際に使用されるキーワードです。ジェネレータ関数は、イテレータを返す特殊な関数です。
Pythonのyieldとは?
Pythonの yield
は、ジェネレータ関数を定義する際に使用されるキーワードです。ジェネレータ関数は、イテレータを返す特殊な関数です。対して通常の関数は、呼び出されると処理を実行し、結果を返すと終了します。
def count_up_to(n):
i = 1
while i <= n:
yield i
i += 1
上記のコードはジェネレータ関数の一例で、1からnまでの数を順に生成します。
yieldの利点と活用シーン
yield
を使用すると、関数の実行を一時的に停止し、後から再開も可能です。これは例えば、大規模なファイルを行ごとに処理する場合や、大量のデータを小さなチャンクに分割して処理する場合に特に有用です。
def read_large_file(file_path):
with open(file_path, "r") as file:
for line in file:
yield line
上記のコードは大きなファイルを行ごとに読み込むジェネレータ関数の一例です。この関数はイテレータを返し、それを使って一度に1行ずつ処理を進められます。一度に全行をメモリに読み込む必要がなくなり、大きなファイルでもメモリを節約しながら処理を行うことが可能になります。
forループとyield
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
文の基本的な使い方とその活用例です。これらの概念を理解し、Pythonプログラミングの幅を広げましょう。.