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 再回到循环体?
初学者还有很多不懂,请多指教,谢谢
走同样的路,发现不同的人生
Lors de l'utilisation de l'opérateur de valeur d'indice [], le programme accédera à la fonction __getitem__ de l'objet.
[]
__getitem__
f[0] est équivalent à f.__getitem__(self, 0), n reçoit la valeur 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
Alors f[0] = 0.
f[0] = 0
Je ne sais pas ce qui se passe, alors je le débogue étape par étape et vérifie la documentation.
f[0], c'est-à-dire n = 0
for x in range(n): a, b = b, a + b
Le corps de la boucle revient directement, donc a n'a pas changé et est toujours 0.
Lors de l'utilisation de l'opérateur de valeur d'indice
[]
, le programme accédera à la fonction__getitem__
de l'objet.f[0]
est équivalent àf.__getitem__(self, 0)
,n
reçoit la valeur 0Alors
f[0] = 0
.Je ne sais pas ce qui se passe, alors je le débogue étape par étape et vérifie la documentation.
f[0], c'est-à-dire n = 0
Le corps de la boucle revient directement, donc a n'a pas changé et est toujours 0.