您的位置:首页技术文章
文章详情页

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

【字号: 日期:2022-08-31 13:28:22浏览:47作者:猪猪

问题描述

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

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

问题解答

回答1:

在用下标取值符[]的时候,程序会去访问对象的__getitem__函数。

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

a = 0, b = 1for x in range(0): # 这里range(0) 直接跳过 a, b = b, a + breturn a # a = 0

所以f[0] = 0。

不知道怎么回事,就一步一步调试,查文档。

回答2:

f[0]的话,即 n = 0

for x in range(n): a, b = b, a + b

循环体就直接return了啊,所以是a没变还是0啊。

标签: Python 编程
相关文章: