ホームページ  >  に質問  >  本文

Python 3.5,斐波数列, a,b = 0,1

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 再回到循环体?

初学者还有很多不懂,请多指教,谢谢

怪我咯怪我咯2765日前663

全員に返信(2)返信します

  • 迷茫

    迷茫2017-04-18 10:27:31

    添字値演算子 [] を使用する場合、プログラムはオブジェクトの __getitem__ 関数にアクセスします。 []的时候,程序会去访问对象的__getitem__函数。

    f[0] 相当于 f.__getitem__(self, 0)n赋值为0

    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]f.__getitem__(self, 0) と同等で、n には値 0 が割り当てられます

    リーリー

    つまり、f[0] = 0 となります。 🎜 🎜何が起こっているのかわからないので、段階的にデバッグし、ドキュメントを確認します。 🎜

    返事
    0
  • 天蓬老师

    天蓬老师2017-04-18 10:27:31

    f[0] の場合、n = 0 です

    リーリー

    ループ本体は直接戻るため、a は変更されず、0 のままです。

    返事
    0
  • キャンセル返事