生成器

生成器(generator):一个特殊的迭代器

 

特点:1.惰性计算数据,节省内存

    2.能够记录状态,并通过next(生成器)函数【或者生成器.__next__()】,访问下一个状态

   3.具备可迭代特性

 

创建方式:

1  将[]→()    l = (i for i in range(1, 100) if 1 % 2 == 0)

2  生成器函数

例:

def test():
    print("xxx")
    yield 1
    print("a")
    yield 2
    print("c")
    yield 3
    print("d")
    yield 4
g = test()   #不执行(生成器的生成)
next(g)    #或者g.__next__()

yield 阻断当前函数执行,当使用next(g)或g.__next()时,都会让函数继续执行,然后当执行到下一个yield时,又会暂停。最后没有yield时,就会报错

注意:

执行函数时(g= test())不会真正执行函数,而是生成生成器

 

 

send()方法-----------比next()多一个向之前挂起的yield传值的过程。(第一个yield前没有yield,则第一个send需要传入None)

g.send("ooo")

 

 

g.close()---------------------关闭生成器

关闭之后不能再用next(g)访问

 

 

return

碰到return就会抛出异常,并将return后面的值一起抛出

如:

return 10

StopIteration 10

 

 

注意:

生成器和迭代器只能迭代一次,如需再次遍历,则需要再次创建。

posted @ 2018-09-12 15:40  我在独墅湖边  阅读(118)  评论(0编辑  收藏  举报