- 函数中出现关键字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,
版权声明:本文为博主原创文章,未经博主允许不得转载。