【发布时间】:2018-02-20 03:46:51
【问题描述】:
为什么会连续多次调用下面的函数:
a = []
def test(a,b):
if b > 0:
a.append(1)
return a
使用test(a,4),每次放大列表a,但连续调用多次函数:
a = 0
def test(a,b):
if b > 0:
a += 1
return a
with test(a,4) 每次返回 1 而不是 1、2、3 等?
看起来列表被一个函数更新并且即使在函数完成执行后仍保留其更新值,而这种行为不适用于整数(我猜是浮点数和其他几种类型)。
【问题讨论】:
-
因为在一种情况下,您正在显式更新一个可变列表对象,而在另一种情况下,您正在创建新的不可变整数对象。
-
查看这个答案here 以获得对这种行为的一个很好的解释。