Python 3.5,斐波数列, a,b = 0,1
怪我咯
怪我咯 2017-04-18 10:25:31
0
2
687

class Fib(object):

def __getitem__(self, n):
    a, b = 0, 1
    for x in range(n):
        a, b = b, a + b
    return a
    

f = Fib()
f[0] = 0

不解为什么是f[0] = 0

函数是不是直接执行Return 再回到循环体?

初学者还有很多不懂,请多指教,谢谢

怪我咯
怪我咯

走同样的路,发现不同的人生

全部回覆(2)
迷茫

在用下標取值符[]的时候,程序会去访问对象的__getitem__函數。

f[0] 相当于 f.__getitem__(self, 0)n賦值為0

a = 0, b = 1
for x in range(0):   # 这里range(0) 直接跳过
    a, b = b, a + b
return a             # a = 0

所以f[0] = 0

不知道怎麼回事,就一步一步調試,查文檔。

Peter_Zhu

f[0]的話,即 n = 0

for x in range(n):
    a, b = b, a + b

循環體就直接return了啊,所以a沒變還是0啊。

熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板