python yeild 生成器

python yeild  生成器

生成器函数在生成值后自动挂起并且暂停它的执行和状态(常常在从头计算整个系列的值或者手动保存和恢复类中的状态时,作为一种解决方案)

生成器在被挂起时自动保存状态,yield将函数挂起后将向调用者返回一个值

经过单步执行 可以看到(1)和(2)是交替执行的

>>> def  gensqures(N):       (1)
    """"""
    for i in range(N):
        yield i**2
    
>>> for j in gensqures(5):/(2)
    print j,':',

0 : 1 : 4 : 9 : 16 :
>>>       ========yeild机理

for循环与生成器工作起来是一样的:通过重复调用next方法,知道捕获一个异常

函数返回的是一个生成器对象,支持迭代器协议(也就是说,next方法可以开始这个函数或者从它上次yield值后的地方回复,以及在得到一系列的值的最后一个时,产生StopIteration)

>>> h=gensqures(5)
>>> h.next()
0
>>> h.next()
1
>>> h.next()
4
>>> h.next()
9
>>> h.next()
16
>>> h.next()


Traceback (most recent call last):
  File "<pyshell#182>", line 1, in <module>
    h.next()
StopIteration

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值