引入
生成器generator:生成器指的是生成器对象,可以由生成器表达式得到,也可以使用yield关键字得到一个生成器函数,调用这个函数得到一个生成器对象
生成器函数:
- 函数体中包含yeild语句的函数,返回生成器对象
- 生成器对象,是一个可迭代对象,是一个迭代器
- 生成器对象,是延迟求值,惰性求值的
yield与return的比较
- 遇到yield,函数就会让出此次操作,去执行函数体别的语句
- return,直接打断函数的执行,返回结果
普通函数,生成器函数的比较
例子一: 单个yield,使用
def inc(): for i in range(2): yield i print(type(inc)) print(type(inc())) x = inc() print(type(x)) print(next(x)) #数值通过next()来调用 print(next(x)) print(next(x,"END")) #取到最后没有元素,给个缺省值 结果: <class 'function'> <class 'generator'> <class 'generator'> 0 1 END
- 普通函数调用使用fn(),