Python Yield尝试

来源:互联网 发布:什么是数据库存储过程 编辑:程序博客网 时间:2024/05/18 00:06

Yield在Python里面是个不容易理解的概念,通过一个程序(Python 2.7里面的),再加上

http://docs.python.org/release/2.5.2/ref/yieldexpr.html的注释,我们大概可以理解yield和set/next是如何改变代码执行的顺序和变量赋值的。

请看下面的程序

程序运行的结果是
x1 = 1
x2 = 2
x3 = (3, 6, None) 


def s(v):    value1 = v    value2 = yield 1    value3 = yield 2    yield value1,value2,value3h = s(3)x1 = h.next()  #第一次iter,函数s开始运行,传入参数v=3,一直运行到yield 1,从而x1 = 1                #(注意,此时还没有走到给value2赋值)  x2 = h.send(6) #第二次iter,函数s继续运行,value2 开始赋值等于传入的6,一直运行到 yield 2,从而x2 = 2                #(注意,此时还没有走到给value3赋值) x3 = h.next()  #第三次iter,函数s继续运行,由于next = set(None),所以Value3 = None,一直运行到yield value1, value2, value3,从而x3=(3,6,None)print x1print x2print x3


原创粉丝点击