Python生成器传参数及返回值原理解析
作者:Mars.wang 时间:2022-03-17 08:58:40
一.生成器简介
在python中,带yield的方法不再是普通方法,而是生成器,它的执行顺序不同与普通方法.
普通方法的执行是从头到尾,最后return返回,或者没有返回值
生成器是到yield就返回yield之后的值,然后阻塞,等待next()/send()继续调起生成器
二.next()/send()的异同:
next()/send()都可以调起生成器
next()只能调起生成器返回值,send()还可以对生成器进行传参数,与正常的理解不同,yield表达式左侧的值是send()方法传进来的参数
还有一个有意思的点,第一次send()的时候要求只能send(None)
三.生成器的执行顺序
在yield这一行代码的执行逻辑是这样的,等号右边的yield r先执行,将r返回,阻塞...
等到下次生成器再被调起的时候,yield把传入的参数给n,再继续执行下面的代码,知道yield继续返回...
def consumer():
r = ''
while True:
n = yield r
if not n:
return
print('[CONSUMER] Consuming %s...' % n)
r = '200 OK'
def produce(c):
c.send(None)
n = 0
while n < 5:
n = n + 1
print('[PRODUCER] Producing %s...' % n)
r = c.send(n)
print('[PRODUCER] Consumer return: %s' % r)
c.close()
In [31]: c=consumer()
In [32]: c.send(None)
Out[32]: ''
In [33]: c.send(1)
[CONSUMER] Consuming 1...
Out[33]: '200 OK'
In [34]: c.send(2)
[CONSUMER] Consuming 2...
Out[34]: '200 OK'
来源:https://www.cnblogs.com/wangbin2188/p/13044748.html
标签:Python,生成器,返回值
![](/images/zang.png)
![](/images/jiucuo.png)
猜你喜欢
python3.7调试的实例方法
2022-09-22 17:16:24
![](https://img.aspxhome.com/file/2023/8/82758_0s.png)
asp智能脏话过滤系统v1.0
2011-04-14 11:00:00
如何避免查询调查结果时出现不相关主题的重复记录?
2009-11-07 18:42:00
爬山算法简介和Python实现实例
2023-08-10 04:56:29
python爬虫爬取图片的简单代码
2021-08-04 10:19:27
Python3实现将文件树中所有文件和子目录归档到tar压缩文件的方法
2022-11-29 08:22:38
使用Filter实现信息的二次检索
2007-10-08 19:19:00
![](https://img.aspxhome.com/file/UploadPic/200710/8/2007108192555888s.gif)
python两种注释用法的示例
2022-07-22 04:50:50
Python字符串格式化输出代码实例
2021-11-09 16:44:22
使用Python获取字典键对应值的两种方法
2022-08-04 05:25:16
![](https://img.aspxhome.com/file/2023/7/117267_0s.png)
使用Python中OpenCV和深度学习进行全面嵌套边缘检测
2021-04-21 10:21:34
![](https://img.aspxhome.com/file/2023/0/67420_0s.jpg)
Python实现RSA加密解密
2022-04-22 19:07:41
![](https://img.aspxhome.com/file/2023/6/103316_0s.png)
基于Python列表解析(列表推导式)
2021-11-14 16:31:36
oracle数据库下统计专营店的男女数量的语句
2012-07-11 16:01:17
基于DataFrame筛选数据与loc的用法详解
2021-09-13 04:37:32
Python Numpy中ndarray的常见操作
2023-08-03 14:27:32
![](https://img.aspxhome.com/file/2023/1/97721_0s.png)
Python自动化测试框架之unittest使用详解
2021-07-02 17:42:27
网红编程语言Python将纳入高考你怎么看?
2022-06-28 15:48:12
![](https://img.aspxhome.com/file/2023/3/92233_0s.png)
用python删除文件夹中的重复图片(图片去重)
2021-07-23 22:42:36
Python中Selenium模块的使用详解
2022-03-31 05:53:47
![](https://img.aspxhome.com/file/2023/4/86154_0s.png)