python 生成器 genorator
genorator保存的是算法,是一种计算机制。
生成generator 两种方法:
1,将列表生成式的[]改为()
a = (x*x for x in range(1,10) if x%2 == 0)
print(next(a))
print(next(a))
2,函数中使用yield来返回需要返回的参数
如果一个函数定义中包含yield
关键字,那么这个函数就不再是一个普通函数,而是一个generator:
def fib(max):
n,a,b=0,0,1
while n<max:
yield b
a,b=b,a+b
n=n+1
g=fib(6)
print("="*20)
print(next(g))
print(next(g))
print(next(g))
print(next(g))
generator都是Iterator对象,比如上面两个栗子中的变量a,g
print("a是不是Iterator呢",isinstance(a,Iterator))
print("g是不是Iterator呢",isinstance(g,Iterator))
打印结果:
a是不是Iterator呢 True
g是不是Iterator呢 True