「Python3.9」ジェネレータにsendメソッドを使用するサンプル

環境
Python 3.9.13
Windows 11 Pro 21H2 64bit
PyCharm 2022.2.1 (Community Edition)

構文
def 関数名()
yield “文字列"
変数名 = 関数名()
変数名.send(文字列
関数内にキーワードのyieldを記述します。
yield文は値を返します。
関数を呼ぶ側は、next関数で呼び出します。
send関数を使用すると関数に値をセットすることができます。
値を返したところを記憶していて次回は続きから行います。

使用例

# coding: utf-8
#関数の定義
def funA(x):
      for a in range(10):
            b = yield ('info',x)
            if b is not None:
                  x = b

res = funA("study")
# 引数の値がセットされて表示され
print(next(res))

# sendメソッドを利用
res.send("skill")

print(next(res))
print(next(res))

実行結果

('info', 'study')
('info', 'skill')
('info', 'skill')

 

Python

Posted by arkgame