猿问

python yield问题?

deffib():
a,b=0,1
whileTrue:
yieldb
a=b
b=a+b
i=10
whilei>0:
printfib().next()
i-=1
输出的全是1,而
deffib():
a,b=0,1
whileTrue:
yieldb
a=b
b=a+b
f=fib()
i=10
whilei>0:
printf.next()
i-=1
输出的就是斐波那契数列呢?
四季花海
浏览 379回答 2
2回答

繁星coding

每次调用fib()实际都生成了一个新的实例可以看到其地址是不一样的所以不是同一个对象而用f=fib()以后,f是一个实例,它可以正常迭代>>>deffib():...a,b=0,1...whileTrue:...yieldb...a=b...b=a+b...>>>f=fib()>>>fib()>>>fib()>>>f>>>f

HUWWW

如果你吧fib()放到while里,那么每次调用的都是从新执行的函数fib,并不会share或者可能抹掉之前yield的状态,那么他的next永远是第一个。
随时随地看视频慕课网APP

相关分类

JavaScript
我要回答