84669 Lernen von Personen
152542 Lernen von Personen
20005 Lernen von Personen
5487 Lernen von Personen
7821 Lernen von Personen
359900 Lernen von Personen
3350 Lernen von Personen
180660 Lernen von Personen
48569 Lernen von Personen
18603 Lernen von Personen
40936 Lernen von Personen
1549 Lernen von Personen
1183 Lernen von Personen
32909 Lernen von Personen
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啊。