arduino yield函数的作用_Python里Yield关键词的作用
要理解yield的作用,您必须理解生成器是什么。在理解生成器之前,必须先理解迭代器。
迭代器
当您创建一个列表时,您可以逐个读取它的项。逐项读取其项称为迭代:
>>> mylist = [1, 2, 3]
>>> for i in mylist:
... print(i)
1
2
3
mylist是一个可迭代的对象。当你使用列表解析式时,你创建了一个列表,因此也是一个迭代器:
>>> mylist = [x*x for x in range(3)]
>>> for i in mylist:
... print(i)
0
1
4
所有你可以用"for... in ...."都是迭代器,包括列表、字符串、文件…等等。
这些迭代器非常方便,因为您可以随心所欲地读取它们,但是您将所有的值都存储在内存中,当您有很多值时,这就非常浪费内存了。
生成器
生成器是迭代器,这种迭代器只能迭代一次。生成器不会将所有值都存储在内存中,它们会动态生成这些值:
>>> mygenerator = (x*x for x in range(3))
>>> for i in mygenerator:
... print(i)
0
1
4
它和列表解析式是类似的,只是用()代替了[]。但是,您不能在mygenerator中对i执行第二次,因为生成器只能使用一次:它print(0),然后忘记它,print(1),最后是4。
Yield
yield是一个与return类似的关键字,只是函数将返回一个生成器。
>>> def createGenerator():
... mylist = range(3)
... for i in mylist:
... yield i*i
...
>>> mygenerator = createGenerator() # create a generator
>>> print(mygenerator) # mygenerator is an object!<generator object createGenerator at 0xb7555c34>
>>> for i in mygenerator:
... print(i)
0
1
4
您需要知道的是函数将返回一组只需要读取一次的值,将这个特性理解清楚,用对地方将极大地提高性能,下次我们将介绍在什么时候该用它。
要掌握yield,您必须了解,在调用函数时,在函数体中编写的代码不会运行。函数只返回生成器对象,这有点棘手:-)
然后,您的代码将从每次使用生成器时停止的地方继续。
现在是最难的部分:
for函数第一次调用从函数创建的生成器对象时,它将从头运行函数中的代码,直到达到yield,然后返回循环的第一个值。然后,彼此调用将再次运行您在函数中编写的循环,并返回下一个值,直到没有要返回的值为止,就如我们上面的例子所示。
我们的文章到此就结束啦,如果你希望我们今天的Python 教程,请持续关注我们,如果对你有帮助,麻烦在下面点一个赞/在看哦,有任何问题都可以在下方留言区留言,我们都会耐心解答的!
Python实用宝典 (pythondict.com)
不只是一个宝典
欢迎关注公众号:Python实用宝典 原文来自Python实用宝典:Python Yield关键词的作用
arduino yield函数的作用_Python里Yield关键词的作用相关推荐
- python库作用_python 里 certifi 库的作用
python 里 certifi 库的作用 安装了certifi之后,和requests库一样也有一个cacert.pem,可以用编辑器打开cacert.pem,里面包含了很多可信任知名公司的证书/公 ...
- python百分号的作用_python里百分号什么意思
最近在学习python过程中,发现了%(百分号)的一些情况,这里就简单介绍一下. python里百分号有2个意思,计算数的时候,它是求余数的意思:另外一个是格式化字符串的作用,如:"%d % ...
- python中exit的作用_python __enter__ 与 __exit__的作用,以及与 with 语句的关系
With语句是什么? 有一些任务,可能事先需要设置,事后做清理工作.对于这种场景,Python的with语句提供了一种非常方便的处理方式.一个很好的例子是文件处理,你需要获取一个文件句柄,从文件中读取 ...
- python中逗号在print的作用_Python 逗号的几种作用
最近研究Python 遇到个逗号的问题 一直没弄明白 今天总算搞清楚了 1.逗号在参数传递中的使用: 这种情况不多说 没有什么不解的地方 就是形参或者实参传递的时候参数之间的逗号 例如def abc( ...
- arduino yield函数的作用_深入理解yield
yield的英文单词意思是生产,刚接触Python的时候感到非常困惑,一直没弄明白yield的用法. 只是粗略的知道yield可以用来为一个函数返回值塞数据,比如下面的例子: def addlist( ...
- python中yield语句的作用_Python中关键字yield有什么作用
python中,yield关键字的作用:1.将一个函数修改为生成器,利用生成器可以有效地节约系统资源,避免不必要的内存占用:2.用于定义上下文管理器:3.协程:4.配合from形成yield from ...
- Arduino ESP8266当中的yield 函数
Arduino ESP8266当中的yield() 函数 在库函数中yield()函数相关代码: 通过VSCode PIO,我的文件位置在:C:\Users\Administrator\.platfo ...
- python yield函数_python之yield函数
yield的英文单词意思是生产,刚接触Python的时候感到非常困惑,一直没弄明白yield的用法. 只是粗略的知道yield可以用来为一个函数返回值塞数据,比如下面的例子: def addlist( ...
- c++11 yield函数的使用
yield函数时c++11的新特性,它在std::this_thread::yield命名空间中实现,函数声明如下: void yield() noexcept; 其作用是当前线程"放弃&q ...
最新文章
- Play-With-Docker在chrome上的插件
- 使用python开发网页游戏_如何用python开发游戏
- NXP I.MX6ULL 交叉编译工具链下载地址?
- phpstudy安装ssl证书_新版Siteground一键安装免费SSL证书 网站https安全访问
- 当AV1视频编解码器来到Webex!
- 【PAT甲级 进制转换】1019 General Palindromic Number (20 分) Java版 7/7通过
- 程序员提高编程技术最有效的一件事?了解一下,迅速提升自己!
- 手把手教你详细分析 Chrome 1day 漏洞 (CVE-2021-21224)
- HDU-ACM-2018(母牛的故事)
- mysql 查询商品列表 显示tag_008商城项目:商品列表查询-查出商品并且分页
- iphone6 计算机无法检测到照相机,爱思助手无法识别设备怎么办 爱思助手无法识别设备解决方法...
- 复习单片机:流水灯(内含2种方法(左移操作符法+crol法)+设计思路+原始代码)
- DEM、DTM、DSM、DOM的区别
- 矩阵并行加速之NENO与SSE
- 前端html的base64使用方法window.btoa()和window.atob()
- windows画图常用函数
- 房屋出租系统(初级)
- 【Zabbix-SNMP trap】使用Zabbix的SNMP trap监控类型监控设备的一个例子
- Xmind思维导图神器:免费有免费的用法
- AI作诗:深度学习应用演示平台