前言
进阶部分连载继续~
如果还没看过我的入门连载部分,先看:
https://ask.hellobi.com/blog/wangdawei/10288
当然,小编的免费入门课程已经有咯,看过连载的朋友可以看看视频再快速梳理一遍~
视频传送门:https://edu.hellobi.com/course/234
前文传送门:
Python进阶系列连载(1)——那些容易被忽略的问题(上)
Python进阶系列连载(2)——那些容易被忽略的问题(中)
Python进阶系列连载(3)——那些容易被忽略的问题(下)
Python进阶系列连载(4)——迭代器
Python进阶系列连载(5)——生成器(上)
使用for循环调用生成器
我们使用next()去遍历生成器的时候,我们不知道什么时候会结束
而结束后再使用next()会抛出异常
因为生成器属于迭代器
所以我们可以使用for循环去调用生成器
与next()等价的方式
这里的__next__() 是两边分别两个英文下滑线
send()强势入场
我们先看一个例子:
发现每次运行,除了返回下一个,还会打印出None
观察代码,注意 item = yield i 这句
首先执行等号右边的,yield返回,此时,返回生成器一个对象,并且中断
在下次使用 f.__next__( )时候,并没有传内容进去,所以可以认为yield i 这整个赋值给item的为None
所以item打印出为None
为了做个比较,引入send()
send()可以看做next()的增强版
除了可以使用next()功能
还能传入一个值到上次yield断开地方的整体表达式(这里传给是yield i)
send()的坑:
这是为什么呢?
大家思考一下!下节课解答~
今天作业:
敲一遍代码,理解一下两种生成器创建方式
自己不敲代码永远学不会写代码
下课
人生苦短,我选Python
未完待续,连载中......
欢迎评论指出文中错误和提问~~~
下一篇链接:Python进阶系列连载(7)——生成器(下)