Pythonのyieldキーワード

1.yieldキーワードの機能

イールドのある関数はジェネレーターであり、通常の関数とは異なります。ジェネレーターの生成は関数呼び出しのように見えますが、next()が呼び出されるまで関数コードを実行しません(forループではnext()は自動的に呼び出されて))実行を開始します。実行フローは関数のフローに従って実行されますが、yieldステートメントが実行されるたびに中断され、反復値が返されます。次の実行は、yieldの次のステートメントから続行されます。通常の実行中に関数がyieldによって数回中断されたように見え、中断するたびに、yieldを通じて現在の反復値が返されます。

歩留まりの利点は明らかです。関数をジェネレーターに書き換えると、反復能力が得られます。クラスインスタンスを使用して状態を保存し、次のnext()値を計算する場合と比較して、コードが簡潔であるだけでなく、実行フローも非常に明確です。 。

関数が特別なジェネレータ関数であるかどうかを判断するにはどうすればよいですか?isgeneratorfunctionを使用して判断できます。

2.サンプルコード

from inspect import isgeneratorfunction

def fun(max):
    b=0
    for i in range(max):
        yield b
        b+=2
    return

print('fun函数是generator(生成器)吗:',isgeneratorfunction(fun))

for i in fun(5):
    print(i)

3.実行結果

fun函数是generator(生成器)吗: True
0
2
4
6
8

 

 

 

 

おすすめ

転載: blog.csdn.net/weixin_44593822/article/details/113786422