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
그래서 f[0] = 0.
f[0] = 0
무슨 일이 일어나고 있는지 모르기 때문에 단계별로 디버깅하고 문서를 확인합니다.
f[0], 즉 n = 0
루프 본문이 직접 반환되므로 a는 변경되지 않았으며 여전히 0입니다.
아래 첨자 값 연산자
[]
를 사용하면 프로그램은 개체의__getitem__
함수에 액세스합니다.
값이 할당됩니다. 으아악f[0]
은f.__getitem__(self, 0)
과 동일하며,n
에는 0그래서
f[0] = 0
.무슨 일이 일어나고 있는지 모르기 때문에 단계별로 디버깅하고 문서를 확인합니다.
f[0], 즉 n = 0
으아악루프 본문이 직접 반환되므로 a는 변경되지 않았으며 여전히 0입니다.