Python的生成器函数

1. 生成器的概念

生成器是Python中的一个对象,对这个对象进行操作,可以依次生产出按生成器内部运算产生的数据。但是要注意,如果不对生成器进行操作,是不会产生数据的。称这样的方式为惰性求值,延或者迟求值。

2. 构造生成器

2.1生成器表达式

以前学过一种方式叫生成器表达式,例如:

g1 = (x*2 for x in range(5))
next(g1)
0
next(g1)
2
...

这就不说了。

2.2 生成器函数

生成器函数,就是说定义函数时,内部带yield就算生成器函数。

每次返回的值就是yield后面的值,例如:

def g2():
    for x in range(5):
        yield x*2

list(g2)
[0, 2, 4, 6, 8]

这个yield很牛逼,和return一样,遇到之后就返回后面的值,但是yield会记住当时执行到哪里了,下一次执行从这个地方开始(就是生成器的特点)。

3. 生成器函数的语法糖

就是yield from 语法,一种看起来简洁的表达形式吧。

普通形式的生成器函数:

def inc1():
    for x in range(10000):
        yield x

相当于

def inc2():
    yield from range(10000)

也就是说,yield from iterable 相当于 yield item for item in iterable

猜你喜欢

转载自blog.csdn.net/LittleHuang950620/article/details/82154256