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

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

原文地址:https://www.cnblogs.com/agilestyle/p/12228750.html