Python Yield尝试

Python中Yield的理解
本文通过一个具体的Python程序示例,结合官方文档说明了如何使用yield关键字来控制函数的执行流程,特别是如何利用send和next方法来实现生成器的状态保存与恢复。

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,value3


h = 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 x1
print x2
print x3


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值