Python yield解析
2024-08-31 03:34:38
Pyhton generators and the yield keyword
At a glance,the yield statement is used to define generators,repalcing the return of a function to provide a result to its caller without destorying local variables.Unlike a function,where on each call it starts with new set of variables,a generator will resume the execution where it was left off.
被yield修饰的函数,会被python解释器当作generator
示例代码:
def countdown():
i=5
while i>0:
yield i
i-=1
for i in countdown():
print(i)
print('********************')
def gen(n):#斐波那契数列
i=0
pref=1#s[n-2]
pres=2#s[n-1]
cur=0#s[n]
while i<n:
if i<2:
yield 1
else:
cur=pref+pres
yield cur
pref=pres
pres=cur
i=i+1
if __name__=='__main__':
for item in gen(20):
print(item)
输出:
5
4
3
2
1
********************
1
1
2
3
5
8
13
21
34
55
89
144
233
377
610
987
1597
2584
4181
6765
调用gen函数不会执行gen函数,它返回一个迭代器对象,第二次迭代时从yield x的下一条语句开始执行,再到下一次遇到yield。
虽然执行流程按照函数的流程执行,但是每次执行到yield时就会中断,它使一个函数获得了迭代能力。
最新文章
- 推荐Linux管理员不可不知十大PHP安全要点 - SCutePHP
- vs2013发布网站
- Javascript高级程序设计——面向对象之创建对象
- 在django中使用自定义标签实现分页功能
- INNO SETUP 5.5.0以上版本中文语言包
- cmd窗口编码方式的修改
- C++11lambda表达式
- php获取客户端ip地址
- Asp.net网站后台代码不能访问-iis部署
- jquery之前后台交互
- Lucence.net索引技术 二
- Linux系统下基本命令
- dojo实现省份地市级联---省份数据源
- java中什么是序列化和反序列化
- js斐波那契数列
- jar包获取资源文件
- Dream_Spark版本定制第一课
- mysql 复制表数据,表结构的3种方法
- 【BZOJ1096】[ZJOI2007]仓库建设 斜率优化
- ELF文件和BIN文件
热门文章
- Bomb HDU - 3555
- PHP学习方向-进阶2(三)
- 《奋斗吧!菜鸟》 第八次作业:Alpha冲刺
- MySql数据库优化可以从哪几个方面进行?
- ZOJ - 2243 - Binary Search Heap Construction
- DOM对象属性(property)与HTML标签特性(attribute)
- PatentTips - Zero voltage processor sleep state
- hdu_1065_I Think I Need a Houseboat_201311160023
- Machine_learning--score
- Manacher求最长回文