Discuss / Python / 想请教下为什么一定要有一步 n=fib(max)的操作,next()函数才有效

想请教下为什么一定要有一步 n=fib(max)的操作,next()函数才有效

Topic source

vvvhyx

#1 Created at ... [Delete] [Delete and Lock User]

想请教下为什么,第一段输出的结果一直是1,而第二段,我多了一步赋值 n = fib(3), 就可以得到下一个结果

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

第一段:

next(fib(3)) 1 next(fib(3)) 1 next(fib(3)) 1

第二段:

n= fib(3) next(n) 1 next(n) 1 next(n) 2

廖雪峰

#2 Created at ... [Delete] [Delete and Lock User]

连续3个:

next(fib(3)) next(fib(3)) next(fib(3))

相当于:

x = fib(3) y = fib(3) z = fib(3) next(x) next(y) next(z)

x, y, z互不影响,本来就只会输出各自的1


  • 1

Reply