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 再回到循环体?
初学者还有很多不懂,请多指教,谢谢
走同样的路,发现不同的人生
Apabila menggunakan operator nilai subskrip [], atur cara akan mengakses fungsi __getitem__ objek.
[]
__getitem__
f[0] bersamaan dengan f.__getitem__(self, 0), n diberikan nilai 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
Jadi f[0] = 0.
f[0] = 0
Saya tidak tahu apa yang berlaku, jadi saya nyahpepijat langkah demi langkah dan menyemak dokumentasi.
f[0], iaitu n = 0
for x in range(n): a, b = b, a + b
Isi gelung kembali terus, jadi a tidak berubah dan masih 0.
Apabila menggunakan operator nilai subskrip
[]
, atur cara akan mengakses fungsi__getitem__
objek.f[0]
bersamaan denganf.__getitem__(self, 0)
,n
diberikan nilai 0Jadi
f[0] = 0
.Saya tidak tahu apa yang berlaku, jadi saya nyahpepijat langkah demi langkah dan menyemak dokumentasi.
f[0], iaitu n = 0
Isi gelung kembali terus, jadi a tidak berubah dan masih 0.