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

浙公网安备 33010602011771号