首页 > 代码库 > python的生成器
python的生成器
1.生成器
>>> def func1():... yield 0... yield 1... >>> a=func1()>>> a.next()0>>> a.next()1>>> a.next()Traceback (most recent call last): File "<stdin>", line 1, in <module>StopIteration
当函数中有yield字段,就代表这是个生成器,生成器运行到yield字段时就会挂起,并返回yield后面的值,当运行a.next()时,函数会再次启动。
所以yield类似于return,只不过一个函数可以有多个yield,而且可以返回多个yield,而不像return一样,return完一个值,函数就结束了。
def f(): a=1 while 1: a=a+1 yield aa=f()for i in a: if i > 100:break print i
2..发送数据给生成器
>>> def f():... n=1... while 1:... n=(yield n)... >>> a=f() >>> a.next()1>>> a.next() #这时n为none,所以没有输出>>> a.send(10) #这时n为10,输出1010>>> a.next() #这时n为none,所以没有输出
这里可以在生成器挂起是发送变量给生成器
3.一个有趣的库:pipe
>>> from pipe import *>>> range(5)|add10>>> range(5)| where (lambda x:x if x>3 else 0)|add4
可以实现类似于linux管道的功能
参考:http://www.cnblogs.com/huxi/archive/2011/07/14/2106863.html
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。