Python生成器

原创转载请注明出处:https://www.cnblogs.com/agilestyle/p/12228750.html

 

把列表推导式的方括号 [] 改成 圆括号 () ,就完成了一个生成器。

列表推导式

 

生成器

 

yield

在Python中,一个函数使用了 yield 方法,这个函数就是一个生成器,但是和 return 不同,yield 返回一个值后,并不会终止当前函数的运行状态,而是让其继续运行下去,局部变量也会被保存。

e.g.

def gen_number(n):
    print('gen number start...')
    while n < 3:
        yield n
        n += 1
    print('gen number end...')

 

output

 

Summary

生成器一次只生成一个迭代对象,而不是像列表推导式一样一次性将一整个列表放到内存中,所以它非常节省内存空间。

posted @ 2020-01-22 15:49  李白与酒  阅读(298)  评论(0编辑  收藏  举报