读者
查看需要有一定的基础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文章
7618浏览量
138270 -
python
+关注
关注
56文章
4812浏览量
85173
发布评论请先 登录
相关推荐
Python中的迭代器与生成器
使用Python实现xgboost教程
快手“可灵AI”软件著作权获批
如何使用Python构建LSTM神经网络模型
三行代码完成生成式AI部署

pytorch和python的关系是什么
Python建模算法与应用
Python在AI中的应用实例
如何实现Python复制文件操作
opencv-python和opencv一样吗
用pycharm进行python爬虫的步骤
云知声说话人识别引擎获得HUAWEI COMPATIBLE证书及认证徽标的使用权

评论