「Python」yield文とsendメソッドを使用するサンプル

環境
PyCharm 2021.3
Python 3.9.7

書式
send関数を使用すると関数に値をセットします。
関数内にキーワードのyieldを記述します。
ジェネレータに対して next() が呼び出されるたびに、
ジェネレータは以前に中断した処理を再開します (ジェネレータは、全てのデータ値と最後にどの文が実行されたかを記憶しています)。

使用例

# coding: utf-8
#定義関数
def funA(p):
      for k in range(10):
            s = yield ('Study',p)
            if s is not None:
                  p = s +"99"
print("結果1 funA関数を呼び出す")
cft = funA(" Skill ")
print(next(cft))

print("結果2 send関数で引数の値を定義関数funAに渡します")
cft.send(" test data 88")
print(next(cft))

実行結果

結果1 funA関数を呼び出す
('Study', ' Skill ')
結果2 send関数で引数の値を定義関数funAに渡します
('Study', ' test data 8899')

 

Python

Posted by arkgame