yield from
式からの戻り値の例を見つけることができませんでした。この単純なコードを試しましたが、成功しませんでした:
def return4():
return 4
def yield_from():
res = yield from range(4)
res = yield from return4()
def test_yield_from():
for x in yield_from():
print(x)
test_yield_from()
生成するもの:
» python test.py
0
1
2
3
Traceback (most recent call last):
File "test.py", line 52, in <module>
test_yield_from()
File "test.py", line 48, in test_yield_from
for x in yield_from():
File "test.py", line 44, in yield_from
res = yield from return4()
TypeError: 'int' object is not iterable
しかし、私は期待していました:
» python test.py
0
1
2
3
4
なぜなら、PEP で述べられているように:
さらに、反復子が別のジェネレーターの場合、サブジェネレーターは値を指定して return ステートメントを実行でき、その値が yield from 式の値になります。
明らかに、私はこの説明を受けていません。return
「サブジェネレーター」のa は、 に関してどのように機能しyield from
ますか?