文章詳情頁
Python 3.5,斐波數列, a,b = 0,1
問題描述
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 再回到循環體?
初學者還有很多不懂,請多指教,謝謝
問題解答
回答1:在用下標取值符[]的時候,程序會去訪問對象的__getitem__函數。
f[0] 相當于 f.__getitem__(self, 0) ,n賦值為0
a = 0, b = 1for x in range(0): # 這里range(0) 直接跳過 a, b = b, a + breturn a # a = 0
所以f[0] = 0。
不知道怎么回事,就一步一步調試,查文檔。
回答2:f[0]的話,即 n = 0
for x in range(n): a, b = b, a + b
循環體就直接return了啊,所以是a沒變還是0啊。
相關文章:
排行榜
