最简单明了的yield from解释
def one():
print('one start')
res = yield from two()
print('function get res: ', res)
return 'one' + res def two():
print('two start')
res = yield from three()
print(">>> two1")
return res def three():
print(">>> three1")
yield 1
print(">>> three2")
return 'three' if __name__ == '__main__':
gen = one()
print(">>> 1")
send_1 = gen.send(None)
print(">>> 2")
print(send_1)
print(">>> 3")
send_2 = gen.send(None)
print(">>> 4")
print(send_2)
print(">>> 5")
运行结果:
>>> 1
one start
two start
>>> three1
>>> 2
1
>>> 3
>>> three2
>>> two1
function get res: three
Traceback (most recent call last):
File "C:/Users/Administrator/Desktop/1.py", line 29, in <module>
send_2 = gen.send(None)
StopIteration: onethree
>>>
不要把yield from 想的太复杂,就把yield from调用看作是普通函数调用来看代码。一旦遇到yield会返回。再次send,特点和生成器一样。
1、当send里面的函数先遇到的是yield from语句,那么会继续往下调用,直到遇到yield会暂停并返回给调用方。
main->one()->two()->three->遇到yield- >main
2、遇到yield语句,会直接返回到send语句所在函数, 也就是send_1 = gen.send(None),send_1 赋值为 three()中的 yield 1
3、再次调用send语句,就会变成1的反向调用,从yield暂停的地方 three() 函数的 yield 1下面开始执行
three()->two()->one->main
4、yield from后面的函数返回值会得到,赋值给左值
three()的返回值会给two()的res,two()的返回值会给one()
转载至 https://www.jianshu.com/p/01d8100c2b41
最简单明了的yield from解释的更多相关文章
- 第一次有人把5G讲的这么简单明了
第一次有人把5G讲的这么简单明了 鲜枣课堂 纯洁的微笑 今天 关于5G通信,常见的文章都讲的晦涩难懂,不忍往下看,特转载一篇,用大白话实现5G入门. 简单说,5G就是第五代通信技术,主要特点是波长为毫 ...
- 简单明了区分IE,Firefox,chrome主流浏览器
简单明了判断浏览器Firefox:typeof navigator !== 'undefined' && navigator.userAgent.toLowerCase().index ...
- 前端神器之Sublime Text2/3简单明了使用总结
为什么叫神器呢? 我总结如下: 第一:也是最重要的,它占内存很小(就如同notepad++那般迅速打开,所以那款其实也不错~).一般IDE比如WebStorm(它也是一款神器来着),Aptana(也比 ...
- Linux守护进程简单介绍和实例具体解释
Linux守护进程简单介绍和实例具体解释 简单介绍 守护进程(Daemon)是执行在后台的一种特殊进程.它独立于控制终端而且周期性地执行某种任务或等待处理某些发生的事件.守护进程是一种非常实用的进程. ...
- ❤️这应该是Postman最详细的中文使用教程了❤️(新手使用,简单明了)
️这应该是Postman最详细的中文使用教程了️(新手使用,简单明了) 在前后端分离开发时,后端工作人员完成系统接口开发后,需要与前端人员对接,测试调试接口,验证接口的正确性可用性.而这要求前端开发进 ...
- python中yield的用法详解——最简单,最清晰的解释(转载)
原文链接 首先我要吐槽一下,看程序的过程中遇见了yield这个关键字,然后百度的时候,发现没有一个能简单的让我懂的,讲起来真TM的都是头头是道,什么参数,什么传递的,还口口声声说自己的教程是最简单的, ...
- python中yield的用法详解——最简单,最清晰的解释
转载自https://blog.csdn.net/mieleizhi0522 首先我要吐槽一下,看程序的过程中遇见了yield这个关键字,然后百度的时候,发现没有一个能简单的让我懂的,讲起来真TM的都 ...
- oracle中number类型最简单明了解释
NUMBER (p,s) p和s范围: p 1-38 s -84-127 number(p,s),s大于0,表示有效位最大为p,小数位最多为s,小数点右边s位置开始四舍五入,若s>p,小数点右侧 ...
- oracle中number数据类型简单明了解释
NUMBER (p,s) p和s范围: p 1-38 s -84-127 number(p,s),s大于0,表示有效位最大为p,小数位最多为s,小数点右边s位置开始四舍五入,若s>p,小数点右侧 ...
- 什么是TTL值?(简单明了的解释)
什么是TTL值? TTL值全称是“生存时间(Time To Live)”,简单的说它表示DNS记录在DNS服务器上的缓存时间. 要理解TTL值,请先看下面的一个例子:假设,有这样一个域名myhost. ...
随机推荐
- class的知识点
1. 在class类中,定义方法在constructor里面和外面的区别?? 定义在constructor里面是原型方法,定义在外边是实例方法. 里面的原型方法在new的时候会改变this指向 2. ...
- 最新2019Java调用百度智能云人脸识别流程
首先先注册账户 https://console.bce.baidu.com/?fromai=1#/aip/overview 点击链接 有账户直接登录 如无 则注册 进入控制台后 点击人脸识别 随便选 ...
- pycharm字体大小设置
首先有两个方法 一个是滚轮放大缩小,一个是固定的字体大小. 调为固定的字体大小: 菜单栏:file--setting--editor--font--size 修改为需要大小字号,例如20,点击ok 滚 ...
- Mysql-Mybatis常用动态Sql语句
1.<if> <select id="" parameterType="" resultType=""> selec ...
- [服务器]Windows Server 2008 64位1核1G安装SQL Server2008
本文为原创文章,转载请注明出处!我的博客地址:http://www.cnblogs.com/txwd 这台服务器是2017年初买的,那时候1核1G,3年要1500.不过现在便宜了,2核4G,3年也就1 ...
- 冒泡排序快速排序C语言
//冒泡排序 void BubbleSort(ElemType A[], int n) { int i, j, temp; int flag=1; for (i = 1; i <= n - 1& ...
- 《Makefile中DEP_LIBRARIES变量的作用》
1.例子 DEP_LIBRARIES := lib@InfoSDK_api lib@WMTMedia lib@WMTUtil lib@curl 该变量是Makefile里面内置的变量,作用是指定依赖的 ...
- js 自定義event
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...
- Scp 免密拷贝
为了图方便 想在更新主机服务的同时把应用同步到备机, 需做一下ssh 的公钥设置 详细见该链接 scp免密传输文件 - lucas-xie - 博客园 (cnblogs.com)
- jmeter中监听器及测试结果分析