前提・実現したいこと
pythonを学習しています。
現在ジェネレーターについて学んでいるのですが、yield、sendメソッドの使い方やgeneratorオブジェクトについて、例として挙げられているコードが理解できません。
該当のソースコード
python
1def gen_com(): 2 while True: 3 n = yield input('名前を教えてください') 4 yield f'こんにちは{n}さん!' 5 6gen = gen_com() 7for name in gen: 8 res = gen.send(name.upper()) 9 print(res)
###実行結果
名前を教えてください yamada
こんにちはYAMADAさん!
名前を教えてください →control+cで終了
理解できない部分
gen = gen_com() for name in gen: res = gen.send(name.upper()) print(res)
この部分について、
3行目でnで代入された文字が大文字となったものが、sendメゾットでnに代入される。
という部分までは分かるのですが、次のyieldの戻り値がresに代入されることがよくわかりません。
また、2行目についてこのnameはこの場合最初のyieldを指していると理解したのですが、2つ目のyieldがこのnameになり得ないのはなぜなのでしょうか。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/03/02 23:29 編集
2021/03/03 01:44