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__函数。
[]
__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 です
ループ本体は直接戻るため、a は変更されず、0 のままです。
添字値演算子
[]
を使用する場合、プログラムはオブジェクトの__getitem__
関数にアクセスします。[]
的时候,程序会去访问对象的__getitem__
函数。f[0]
相当于f.__getitem__(self, 0)
,n
赋值为0所以
f[0] = 0
f[0]
はf.__getitem__(self, 0)
と同等で、n
には値 0 が割り当てられますリーリー
つまり、f[0] = 0
となります。 🎜 🎜何が起こっているのかわからないので、段階的にデバッグし、ドキュメントを確認します。 🎜f[0] の場合、n = 0 です
リーリーループ本体は直接戻るため、a は変更されず、0 のままです。