python yield学习心得
来源:互联网 发布:网络科技产品 编辑:程序博客网 时间:2024/06/05 08:48
1.首先,当函数中包含yield的时候,它本身就已经不再是一个普通的函数,而是变成了一个生成器generator(和List类似,List:
[..,..,..],generator:(..,..,..),访问元素时用next()函数),只不过里面的元素还没有确定。
2.调用包含yield的函数之后,函数本身并不会执行,而是返回了一个迭代对象iterable,类似于range()只不过里面的元素还没有确定,
假设函数g()是一个包含的yield的生成器函数,for i in g():·········
3.yield和return有相同的功能,即返回一个值,区别是执行完return后函数就会结束,而执行yield之后只是会暂停,此时便产生了一个
值,for i in g():·········中的 i 此刻就获取到了这个返回值,然后在进行下一次循环时,原函数会从暂停的地方接着执行,直至再遇到
yield,然后暂停并返回下一个值。
4.其实上述功能也可以 通过直接运行完函数,然后返回一个list来实现,但用yield实现的好处是:调用普通函数返回List会占用比较大
的空间,而调用包含yield的生成器函数返回了一个 迭代对象 ,只占用比较小的空间(姑且可以理解成在调用时因为函数还没执
行,所以生成器中还是空的,而在执行循环过程中每次只返回一个值,所以始终占用较小的空间)
0 0
- python yield学习心得
- python 2.5版yield之学习心得
- Python学习心得(四) yield和三元运算以及lambda表达式
- python----yield
- Python yield
- python yield
- python yield
- python --yield
- Python yield
- Python -- yield
- python yield
- Python yield
- python yield
- Python yield
- python yield
- python --yield
- Python yield
- python yield
- Java compiler level does not match the version of the installed Java project facet.
- node.js基础(三)
- 摘抄
- Android SDK Manager 下载速度慢的问题
- [Leetcode] 95. Unique Binary Search Trees II 解题报告
- python yield学习心得
- C# 封装
- 玩坏了的深度学习
- 经典的SQL语句大全
- 白话RSA算法原理
- BugHD(KSCrash)使用和崩溃信息获取
- 浅谈AngularJS
- mac虚拟机安装win10的图文教程(内含镜像文件下载地址)
- 第一个作业