\

Pythonのyieldreturnは、関数から値を返すために使用されますが、その動作は大きく異なります。

returnの動作

returnは、関数の処理を終了し、値を返します。以下に例を示します。

def foo():
    a = 1
    b = 2
    return a  # ここで処理を終えてaを返す
    c = 3
    return b

この例では、foo関数はaの値を返した後、処理を終了します。そのため、c = 3return bは実行されません。

yieldの動作

一方、yieldは関数の処理を一時停止し、値を返します。そして、次に関数が呼び出されると、停止した箇所から処理を再開します。以下に例を示します。

def func():
    a = 10
    b = 20
    c = a + b
    yield c  # ここで一旦停止
    a = 100
    b = 200
    c = a + b
    yield c  # ここで一旦停止
    a = 1000
    b = 2000
    c = a + b
    yield c  # ここで一旦停止

for x in func():
    print(x)

この例では、func関数はyieldごとに値を返し、処理を一時停止します。その後、forループにより関数が再度呼び出されると、停止した箇所から処理を再開します。

まとめ

yieldreturnの主な違いは、returnが関数の処理を終了するのに対し、yieldは関数の処理を一時停止し、次に関数が呼び出されると停止した箇所から処理を再開する点です。これにより、yieldは大規模なデータセットの効率的な処理を可能にします。.

投稿者 admin

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です