热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

菲波那切数列与生成器

先写了一个函数输出菲波那切数列:deffib1(max):n,a,b0,0,1whilen<max:print(b)c

先写了一个函数 输出菲波那切数列:

def fib1(max):
n,a,b = 0,0,1
while n print(b)

c = a+b
a = b
b = c
n += 1

return 'done'

fib1(7)输出如下:

"C:\Program Files\Python35\python.exe" C:/Users/zty/Desktop/Py3Study/迭代器.py
1
1
2
3
5
8
13

怎么变成一个生成器呢?
要把fib1函数变成generator,只需要把print(b)改为yield b就可以了:

def fib2(max):
n,a,b = 0,0,1
while n yield b
c = a+b
a = b
b = c
n += 1
g = fib2(10)

print(g)
print(g.__next__())

for n in fib2(10):
print(n)

  generator和函数的执行流程不一样。函数是顺序执行,遇到return语句或者最后一行函数语句就返回。而变成generator的函数,在每次调用next()的时候执行,遇到yield语句返回,再次执行时从上次返回的yield语句处继续执行


推荐阅读
author-avatar
韩大妖丫头
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有