84669 personnes étudient
152542 personnes étudient
20005 personnes étudient
5487 personnes étudient
7821 personnes étudient
359900 personnes étudient
3350 personnes étudient
180660 personnes étudient
48569 personnes étudient
18603 personnes étudient
40936 personnes étudient
1549 personnes étudient
1183 personnes étudient
32909 personnes étudient
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 再回到循环体?
初学者还有很多不懂,请多指教,谢谢
走同样的路,发现不同的人生
在用下标取值符[]的时候,程序会去访问对象的__getitem__函数。
[]
__getitem__
f[0]相当于f.__getitem__(self, 0),n赋值为0
f[0]
f.__getitem__(self, 0)
n
a = 0, b = 1 for x in range(0): # 这里range(0) 直接跳过 a, b = b, a + b return a # a = 0
所以f[0] = 0。
f[0] = 0
不知道怎么回事,就一步一步调试,查文档。
f[0]的话,即 n = 0
for x in range(n): a, b = b, a + b
循环体就直接return了啊,所以是a没变还是0啊。
在用下标取值符
[]
的时候,程序会去访问对象的__getitem__
函数。f[0]
相当于f.__getitem__(self, 0)
,n
赋值为0所以
f[0] = 0
。不知道怎么回事,就一步一步调试,查文档。
f[0]的话,即 n = 0
循环体就直接return了啊,所以是a没变还是0啊。