为什么66行的结果和70行的结果不同?

img

说明每次getNum(5)的结果是不同的

getNum函数每次调用都会产生一个新的生成器对象。每个生成器中都有一个i变量。
你这样
print(next(getNum(5)))
print(next(getNum(5)))
是调用了getNum函数两次。产生两个新的生成器,两个生成器中的i变量都是独立的,两个生成器中的i变量初始都是0。
两次next()是对各自的生成器第一次迭代,返回的各自i变量的值都是0


而 a = getNum(5)只是调用了getNum函数一次。只产生了一个生成器,只有一个i变量。
之后
print(next(a))
print(next(a))
这样两次next()都是对同一个生成器迭代,返回的是同一个生成器中的i变量。
同一个i变量第一次返回的是0,之后i+=1,第二次就是1了