解決したいこと
Pythonの勉強をしています。
ジェネレータ式の仕組みに関して、ご教示お願い致します。
前提として、私はジェネレータをジェネレータたらしめているものはyieldだと認識しています。
根拠は、以下の内容からです。
returnで関数を定義した場合、その関数をコールすると
<function test at xxxxxxxxxxxxxx>
のような値が返り、functionだということがわかります。
しかし、返り値をyieldで返すようにして定義すると、同じようにコールした場合、
<generator object test at xxxxxxxxxxxxxx>
と値が返り、generatorであることがわかります。
以上の理由で、yieldがジェネレータをジェネレータたらしめていると認識しているのですが、
そうなるとジェネレータ式に関して疑問が生じます。
例えば、以下のようにしてジェネレータ式が書けるかと思いますが、yieldがありません。
>>> test = (i for i in range(0,10)) >>> test <generator object <genexpr> at xxxxxxxxxxxxxx>
ジェネレータ式では何を以てジェネレータとして生成されているのでしょうか。
裏でyieldが自動定義されているのでしょうか。
詳しい方、ご教示いただけると嬉しいです。
補足情報(FW/ツールのバージョンなど)
Python 3.6.5
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/09/23 08:08 編集
2018/09/23 08:16
2018/09/23 08:20
2018/09/23 08:23
2018/09/23 08:24
2018/09/23 08:27
2018/09/23 08:29
2018/09/23 08:32 編集
2018/09/23 08:40
2018/09/24 01:11