读者
查看需要有一定的基础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语言
+关注
关注
183文章
7642浏览量
144559 -
python
+关注
关注
57文章
4856浏览量
89551
发布评论请先 登录
FreeRTOS 空闲任务
语法纠错和testbench的自动生成
淘宝商品详情接口(item_get)企业级全解析:参数配置、签名机制与 Python 代码实战
termux调试python猜数字游戏
termux如何搭建python游戏
python app不能运行怎么解决?
linux虚拟环境中调用Linux 版matlab编译的python库时出错
python入门圣经-高清电子书(建议下载)
如何在虚拟环境中使用 Python,提升你的开发体验~
零基础入门:如何在树莓派上编写和运行Python程序?

python之生成subgen的使用权
评论