Loading

generator的return语句的返回值,捕获StopIteration错误,返回值包含在StopIteration的value中

新建一个斐波拉契数列函数成generat

def fib(max):
    n, a, b = 0, 0, 1
    while n < max:
        yield b
        a, b = b, a + b
        n = n + 1
    return 'done'

# 捕获StopIteration错误,获取函数return
if __name__ == '__main__':
    print(fib(6))
    g = fib(6)
    while True:
        try:
            x = next(g)
            print('g: ',x)
        except StopIteration as e:
            print('Generator return value: ', e.value)
            break

 

执行结果:

E:\Python\Python38\python.exe E:/py/test.py
<generator object fib at 0x000002304BB31D60>
g:  1
g:  1
g:  2
g:  3
g:  5
g:  8
Generator return value:  done

Process finished with exit code 0

 

posted @ 2021-01-22 10:57  猫鱼故巷  阅读(139)  评论(1)    收藏  举报