零基础学python-19.5 重访迭代器:生成器yield
来源:互联网 发布:易语言ce源码 编辑:程序博客网 时间:2024/05/22 15:23
这一章节我们来讨论一些生成器yield
1.yield的特性:延迟结果创建
* 生成器函数:也是使用def定义,但是使用yield返回,而且每次返回只是返回一个结果,在每次产生结果之间挂起和继续它们的状态(就是当返回有三个结果,第一个结果返回了,但是第二个结果没有返回,但是由于是yield,它记录下返回第一个结果时所有作用域以及变量的状态,因此,在当需要返回第二个结果的时候,它将会继续刚才的状态计算下去)。
>>> def test(N):for x in range(N):yield x>>> x=test(3)>>> next(x)0>>> next(x)1>>> next(x)2>>>
从上面的代码可以看见,yield返回一个迭代器,而且当它返回一个结果的时候,它会自动记录当前作用域以及变量状态,使得下一个结果产生的时候可以继续上一次计算的状态。
2.yield vs return
yield的例子继续沿用上面的代码:
>>> def test(N):for x in range(N):yield x>>> x=test(3)>>> next(x)0>>> next(x)1>>> next(x)2
下面我们给出return的代码:
>>> def test(N):for x in range(N):return x>>> test(3)0>>> x=test(3)>>> next(x)Traceback (most recent call last): File "<pyshell#16>", line 1, in <module> next(x)TypeError: 'int' object is not an iterator>>> x0>>>
对比上面两组代码,yield就不用再说了,返回一个迭代器,而return,返回的是一个整数,而且在执行完第一次之后他就跳出了循环,不再继续
生成器函数与常规函数都是一样,也是使用def定义,只是在创建的时候,它自动实现迭代协议
总结:这一章节主要介绍了生成器yield的特性,以及跟return之间的区别
这一章节就说到这里,谢谢大家
------------------------------------------------------------------
点击跳转零基础学python-目录
0 0
- 零基础学python-19.5 重访迭代器:生成器yield
- 零基础学python-19.10 生成器是单迭代器
- 零基础学python-19.9 生成器函数与生成器表达式
- Python-迭代器、生成器、yield
- 零基础学python-19.6 生成器函数应用
- 零基础学python-19.7 扩展生成器函数
- 零基础学python-19.8 生成器表达式:当迭代器遇上列表解析
- Python 迭代器 和 生成器yield
- 零基础 学Python
- python基础-迭代器、for底层机制、生成器、list结合yield、__call__、yield函数列表
- python 从yield 学习迭代器和生成器
- python迭代器、生成器和yield语句
- python的迭代器、生成器、yield理解
- python迭代器、生成器、yield和xrange
- python生成器:使用yield关键字定义迭代器
- python yield生成器
- Python yield 与生成器
- Python yield 生成器
- DataSnap如何监控Tcp/IP客户端的连接情况
- Android实战简易教程<五十一>(ListView实现子控件的动态显示和隐藏、checkbox全选和反选)
- cordova 常用命令
- android studio perfected Plugins share!!!
- 工具之时间/日期
- 零基础学python-19.5 重访迭代器:生成器yield
- Java产生随机数和随机字母的方法
- CAD控件:PowerBuilder开发使用控件入门
- 内部类
- ITF-taekwondo Testing Requirements
- 数据结构学习笔记——树
- ThreadLocal的设计理念与作用
- 转载自cocoa论坛里面的iOS开发知名博客
- java突破----回调机制