Python 中 yield 的用法很像 return,都是提供一个返回值,但是 yield 和 return 的最大区别在于,return 一旦返回,则代码段执行结束,但是 yield 在返回值以后,会交出 CUP 的使用权,代码段并没有直接结束,而是在此处中断,当调用 send() 或者 next() 方法之后,yield 可以从之前中断的地方继续执行。
在一个函数中,使用 yield 关键字,则当前的函数会变成生成器。
下面生成一个斐波那契数列。
def fib(n): index = 0 a = 0 b = 1 while index < n: yield b a,b = b, a+b index += 1
生成器对象:
fib = fib(100) print(fib)
打印出来的结果是一个生成器对象,并没有直接把我们想要的值打印出来。
<generator object fib at 0x7fef20062ac0>