有 return 的函数直接返回所有的结果,程序终止不再运行,并销毁局部变量
def example():
x = 1
return x
example = example()
print(example)
# 1
而有 yield 的函数则返回一个可迭代的 generator(生成器)对象,
可以使用 for 循环或者调用 next() 方法遍历生成器对象来提取结果
def fab(max):
"""生成斐波那契数列"""
n, a, b = 0, 0, 1
while n < max:
yield b # 使用 yield
# print b
a, b = b, a + b
n = n + 1
for n in fab(5):
print(n)
# 1
# 1
# 2
# 3
# 5