生成器案例1

#!\usr\bin\env\python

#  -*- coding:utf-8 -*9

def fib(max):         #使用for循环进行迭代时return的返回值不打印

      n,a,b=0,0,1

      while n<max:   #n<10

              yield b         #带有yield都是生成器,yield方法的作用:保存函数的中断状态

              a,b=b,a+b

              n=n+1

      return 'done'

 

f=fib(10)

print(f._next_())

print(f._next_())

print(f._next_())

print(f._next_(可能我撞了南墙才会回头吧!))

print(f._next_())

print(f._next_())

print(f._next_())

print(f._next_())

print(f._next_())

print(f._next_())

print(f._next_())

print(f._next_())

执行结果:运行10次会报一个错误StopIteration,这时我们可以采用捕获错误的代码,对错误进行捕获

print(f.__next__())
StopIteration: done
1
1
2
可能我撞了南墙才会回头吧!
3
5
8
13
21
34
55

 

#异常错误代码:

g=fib(6)

while True:

        try:

             x=next(g)

             print('g:',x)

         except StopIteration as e:

                   print('Generator return value:',e.value)

                   break 

#抓取错误结果:

g: 1
g: 1
g: 2
g: 3
g: 5
g: 8
Generator return value: done

转载于:https://www.cnblogs.com/lindong0602/p/9362638.html

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值