python生成器

生成器:

生成器指的是生成器对象,可以由生成器表达式得到,也可以使用yield关键字得到一个生成器函数,调用这个函数得到一个生成器对象

生成器函数:

函数体中包含yield语句的函数,返回生成器对象,生成器对象是一个可迭代对象,是一个迭代器,是延迟计算,惰性求值的

例:

普通函数调用fn(),函数会立即执行完毕,但是生成器函数可以使用next函数多次执行,生成器函数等价于生成器表达式,只不过生成器函数可以更加的复杂

生成器应用:无限循环

处理递归问题:

协程coroutine:

生成器的高级用法,比进程,线程轻量级,是在用户空间调度函数的一种实现,python3.5使用async、await关键字直接原生支持协程

协程调度器实现思路:

有2个生成器A、B,next(A)后,A执行到yield语句暂停,然后去执行next(B),B执行到yield语句也暂停,然后再次调用next(A),再调用next(B),周而复始,就实现了调度的效果,协程是一种非抢占式调度

yield from是python3.3出现的新的语法

yield from iterable是for item in iterable: yield item形式的语法糖

从可迭代队象中一个个拿元素:

 

等价于

 

posted on 2019-01-09 21:38  s-p-l  阅读(188)  评论(0)    收藏  举报

导航