yield 关键字

Python 中有一个重要的关键字 yield,包含 yield 关键字语句的函数都被称为 生成器生成器和普通函数有不一样的特性:普通函数使用 return 返回一个值,然后函数执行结束。yield 可以生成多个值,每次一个,每次 yield 生成一个值后,函数就冻结,等待被重新唤醒,唤醒后从程序暂停的地方继续执行。可以使用 for 对生成器进行迭代。

生成器函数返回一个生成器对象(generator),我们可以对生成器对象进行迭代

 def count(n):
    while (n > 0):
        yield n
        n = n - 1

 if __name__ == '__main__':
    print(type(count(3)))
    for i in count(3):
        print(i)

程序的输出结果为

 <class 'generator'>
 3
 2
 1

除了可以使用 for 迭代得到生成器中的元素,还可以用生成器对象的  __next__() 方法每次得到一个生成器中的元素。

列表推导类似的,还有一个叫做生成器推导的东西。

列表推导使用中括号 [],推导立即生成一个列表。生成器推导使用小括号 () 它生成一个 generator,是一个可迭代对象。

另外,直接在既有的小括号中想要使用生成器推导时,不用再添加一对圆括号。

 sum(x for x in range(4))

最后输出结果为

 >>>6

除了生成器,还有一个重要的概念是迭代器,将会在以后进行学习。





相关推荐

评论

  1. #1

    dUoxKpta 2019-09-06 01:15:02
    dUoxKpta

  2. #2

    WEmXeAbt 2019-09-05 22:19:18
    WEmXeAbt

  3. #3

    zuLdJdBo 2019-09-05 19:41:58
    zuLdJdBo