• 生成器案例1


    #!usrinenvpython

    #  -*- 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

  • 相关阅读:
    BETA 版冲刺前准备
    第十一次作业
    Alpha 冲刺 (10/10)
    Alpha 冲刺 (9/10)
    Alpha 冲刺 (8/10)
    Alpha 冲刺 (7/10)
    Alpha 冲刺 (6/10)
    Alpha 冲刺 (5/10)
    Alpha 冲刺 (4/10)
    抽奖系统现场编程
  • 原文地址:https://www.cnblogs.com/lindong0602/p/9362638.html
Copyright © 2020-2023  润新知