生成器介绍 分类: python 小练习 python基础学习 divide into python 2013-12-31 21:17 226人阅读 评论(0) 收藏
dive into python P345
- 函数中出现关键字yield,则它是一种每次生成一个值的特殊函数,调用它会返回一个生成器对象,它可以返回x的连续值
- 调用含有yield关键字的函数,即可创建一个生成器的实例。
- 不断调用生成器对象的next()方法将从你上次离开的位置重新开始,并继续下去,直到又遇到yield语句。
#coding:utf-8 --使用生成器,返回小于n的元素值,myield函数返回一个生成器对象 def myyiled(n): a,b=0,1 while a<n: yield a a,b=a+b,a --使用生成器,返回前n项的元素值,my函数返回一个生成器对象 def my(n): a,b=0,1 for i in range(n): yield a a,b=a+b,a if __name__=="__main__": for i in myyiled(10): print i, # 0 1 1 2 3 5 8 print for i in my(10): print i, # 0 1 1 2 3 5 8 13 21 34
def make_counter(x): print 'entering make_counter function' while 1: yield x print 'incrementing x' x+=1 if __name__ == '__main__': #返回一个生成器对象 counter = make_counter(2) #调用生成器对象的next方法 print counter.next() # 2 print counter.next() # 3
或输出10项:
def main(n):
while 1:
yield n
n+=1
if __name__ == '__main__':
m = main(0)
for i in range(10):
print m.next(), # 结果:0 1 2 3 4 5 6 7 8 9
# for循环将会创建一个生成器对象并连续调用其next方法获得值并赋予循环变量i,如下:
def main(x): print 'entering main' while x: yield x x-=1 if __name__ == '__main__': #调用main函数,返回一个生成器对象 for i in main(10): print i,
版权声明:本文为博主原创文章,未经博主允许不得转载。