def fibonacci(i):
a, b = 0, 1
j = 0
fib = []
while j < i:
a, b = b, a+b
j+=1
fib = fib.append(a)
return(fib)
a = fibonacci(10)
print(a)
以上的python run之后提示 'NoneType' object has no attribute 'append'。而当将以上代码中的fib = fib.append(a)改为fib.append(a)之后,则正确。
那么为什么不能将fib append之后的list重新赋值给fib呢? 让我们来看看一下代码的输出值:
list = [1, 2, 3, 4]
a = list.append(5)
print(a)
print(list)
运行之后输出结果为:
None
[1, 2, 3, 4, 5]
因此,我们可以看到list.append[5]操作是将5加到list的元素中,但是list.append[5]返回值为None。这里我们需要了解append的操作原理,append(同理还有extend,insert)是对列表增加元素的操作,但是它本身没有返回值(或者说返回值为None),因此a=a.append[5]如果输入结果是None,而并非我们期待的添加了元素5之后的list。
网友评论