python的yield生成器简单理解

72 阅读1分钟

yield:
第一次遇到时返回yield后的推算,不执行yield后的代码,相当于暂停函数,next()下一次遇到yield时,继续从yield后执行。

g=[x**2 for x in range(5)]

这是一个可迭代对象

g=(x**2 for x in range(5))

这是一个生成器

来由:
生成器每次next()时依据yield后的算法生成,占用内存小。
菲波那切数列:

def f(m):
	a=0
	b=1
	print(a)
	for e in range(m):
		yield a+b
		a=a+b
		b=a+b
		print(b)
def main():
	f(max)
main()