讀者
查看需要有一定的基礎python,概念部分建議 閱讀經典書籍: 百萬的python 或者w3c school 或者 菜鳥教程
系列
這是一個系列,如遇到不明白的部分,可以回看前面的文章
功能
通過 gen gen 的使用權,即在 subgen() 時,subgen 的使用權,把的價值傳遞給 gen 的使用方,可以直接控制生成方的調用,生成 subgen 的使用權。亞根終止。
重復:如果yield from 后面是str list tple set map range,直接next()
例子說明
yield from的執行流程,并制作了一個模擬fake_yield_from,
源是c語言所寫,可以自己研究
import inspect
def subgen():
res = yield 11
return res
def gen():
res = yield from subgen()
return res
def fake_yield_from(f):
# 模擬yield from的功能
result = None
if inspect.isgenerator(f):
try:
result = f.send(None)
except StopIteration as e:
result = e.value
else:
result = next(iter(f))
return result
def gen_fake():
res = yield fake_yield_from(subgen())
return res
def print_value(f, args):
try:
b = f.send(args)
except StopIteration as e:
print(f'{f.__name__}返回值 {e.value}')
return e.value
else:
print(f'{f.__name__}接收 {b}')
gs = [gen(), gen_fake()]
for g in gs:
print_value(g, None)
print_value(g, 2)
'''
結果:
gen接收 11
gen返回值 2
gen_fake接收 11
gen_fake返回值 2
'''
審核編輯:劉清
-
C語言
+關注
關注
180文章
7630瀏覽量
140481 -
python
+關注
關注
56文章
4825瀏覽量
86228
發布評論請先 登錄
python入門圣經-高清電子書(建議下載)
Python中的迭代器與生成器
使用Python實現xgboost教程
快手“可靈AI”軟件著作權獲批
如何使用Python構建LSTM神經網絡模型
三行代碼完成生成式AI部署

評論