Python进阶系列连载(6)——生成器(中)

使用for循环调用生成器

我们使用next()去遍历生成器的时候,我们不知道什么时候会结束

而结束后再使用next()会抛出异常

因为生成器属于迭代器

所以我们可以使用for循环去调用生成器

与next()等价的方式

扫描二维码关注公众号,回复: 3277266 查看本文章

send()强势入场

我们先看一个例子:

发现每次运行,除了返回下一个,还会打印出None

观察代码,注意 item = yield i 这句

首先执行等号右边的,yield返回,此时,返回生成器一个对象,并且中断

在下次使用 f.__next__( )时候,并没有传内容进去,所以可以认为yield i 这整个赋值给item的为None

所以item打印出为None

为了做个比较,引入send()

send()可以看做next()的增强版

除了可以使用next()功能

还能传入一个值到上次yield断开地方的整体表达式(这里传给是yield i)

send()的坑:

这是为什么呢?

猜你喜欢

转载自blog.csdn.net/qq_40925239/article/details/82793677