这样讲解 yield//把一个不是很好理解的概念和一个很常见的实例联系起来,轻松引出概念【再次推荐这个Python教材】
2018-01-26 17:00
676 查看
原文地址:
https://www.liaoxuefeng.com/wiki/0014316089557264a6b348958f449949df42a6d3a2e542c000/0014317799226173f45ce40636141b6abc8424e12b5fb27000
斐波拉契数列用列表生成式写不出来,但是,用函数把它打印出来却很容易:
仔细观察,可以看出,
也就是说,上面的函数和generator仅一步之遥。要把
https://www.liaoxuefeng.com/wiki/0014316089557264a6b348958f449949df42a6d3a2e542c000/0014317799226173f45ce40636141b6abc8424e12b5fb27000
斐波拉契数列用列表生成式写不出来,但是,用函数把它打印出来却很容易:
def fib(max): n, a, b = 0, 0, 1 while n < max: print(b) a, b = b, a + b n = n + 1 return 'done'
>>> fib(6) 1 1 2 3 5 8 'done'
仔细观察,可以看出,
fib函数实际上是定义了斐波拉契数列的推算规则,可以从第一个元素开始,推算出后续任意的元素,这种逻辑其实非常类似generator。
也就是说,上面的函数和generator仅一步之遥。要把
fib函数变成generator,只需要把
print(b)改为
yield b就可以了:
def fib(max): n, a, b = 0, 0, 1 while n < max: yield b a, b = b, a + b n = n + 1 return 'done'
相关文章推荐
- python yield 实例理解要点
- 一个程序理解python的类属性和实例属性(共有属性和私有属性的访问区别)
- 常见的python正则用法实例讲解
- 从刘古权老师的话引出:服务到底是一个什么概念? 推荐
- 以一个投票程序的实例来讲解Python的Django框架使用
- 纠正一个概念:类就有VMT,各实例不过是共享这个VMT而已
- 再忆Oracle实例名,服务名等概念区别与联系 推荐
- [学习笔记]Java代码构建一个线程池的自己学习写的实例,用这个你会更好的理解文章内容
- python读取csv文件并把文件放入一个list中的实例讲解
- 用jquerytree和jquery做树的实例(第一次用这个,很强大,本次例子不是很好,但效果出来了)
- python 新东东 协程(yield与这个概念有关)
- try catch finally 的用法,你知道多少?最详细、最到位的讲解,配合代码实例讲解,让你轻松掌握和理解
- 以一个投票程序的实例来讲解Python的Django框架使用
- 一个新手对ado.net的理解(顺便推荐一个气氛很好的群)
- 用Python将一个列表分割成小列表的实例讲解
- 从A页面单击 window.open 打开了B页面 B页面没有关闭再次点击A页面的这个链接, 让他刷新B页面而不是在打开一个B页面可以做到吗?
- 常见的python正则用法实例讲解
- Python之自动获取公网IP的实例讲解
- SAAS: 将企业应用程序与托管 BizTalk Services 联系起来-MSDN(强力推荐!)