python-基础-yield 关键字用法

 

#!/usr/bin/env python3
# coding=utf-8
'''
通过斐波那契数列生成,了解下 yield 关键字的使用:
yield 可返回一个迭代器;
如果在for 循环中调动的方法中遇到 yield 关键字,则每次循环返回 yield 后面的结果,直至结束;
如果用 next() 方法调用,则需要自己控制循环次数;
'''
#斐波那契
class Fibonacci(int):
def __init__(self,num):
self.n = 1 if num<1 else num
print('init=',self.n)

def iterator(self):
if self.n>10:
print('n=%s 过大,迭代停止'%self.n)
return
n,a,b = 1,0,1;
while n<=self.n:
yield a
print('\niterator %s %a'%(n,a))
a,b = b,a+b
n+=1

def main():
num = 6
fib = Fibonacci(num)
print('-'*30,'test1')
for n in fib.iterator():
print('fib=',n)

print('-'*30,'test12')
fib = Fibonacci(num)
ie = fib.iterator()
i = 0
while i<num:
i+=1
n = next(ie)
print('fib=',n)
pass

if __name__ == '__main__':
main()
#testRandom()
pass