python的yield用法

Published on 2016 - 11 - 13

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 + 1

c=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,运行速度也不错。

Comments
Write a Comment
  • no13bus reply

    66666666