yield在使用过程中需要用到函数内部,现在已经不能单独的使用了。含有yield的函数一般被认为是generator或者是产生generator的函数.直接上网上的斐波那契例子:
def fab(max): n, a, b = 0, 0, 1 while n < max: #print b yield b a, b = b, a + b n = n + 1c=fab(5)代表的是一个generator 注意fab和fab(5)不一样。代码在运行过程中遇到yield的时候会将代码中断,然后c这个迭代器进行c.next()的时候会继续运行之前中断后面的代码,直到再次遇见c.next()。这个时候yield d会将b作为c.next()的返回结果。可以将yield看为这样的函数 put --> wait_and_get.先输入(send函数),然后等待下次的迭代并且将上次的迭代输出的结果作为输入。所以在fab里面的while循环里面,b的值看着像是有记忆功能似的,会记录下上次迭代得到的b值。
借助yield简化了代码,并且实现了generator,运行速度也不错。
EOF