我将尝试理解当列表作为函数参数传递时的处理方式。所以我做了以下操作:
我初始化了一个列表:
我回想起了语法:
当我重新打印它时,结果是相同的列表:
我初始化了一个列表:
ll = [1,2,3,4]
并定义一个函数:
def Foo(ar):
ar += [11]
我将列表传递给了该函数:
Foo(ll)
当我打印它时,我得到了:
print ll # [1, 2, 3, 4, 11] #case(1)
到目前为止一切都很好。
现在我修改了该功能,以便重置列表,使其仅有一个元素:
def Foo(ar):
ar = [11]
我回想起了语法:
我回想起了语法:
Foo(ll)
当我重新打印它时,结果是相同的列表:
print ll # [1, 2, 3, 4] # case(2)
我原以为列表是按引用传递的,所以无论我们在函数内对列表做什么都会改变从主程序传递的原始函数。因此,在情况(2)中,我期望以下结果:
print ll # [11] # case(2) expected result
我在这里漏了什么吗?
ar = [11]
将名称分配给一个完全不同的对象。如果您想替换列表的整个内容,请尝试ar[:] = [11]
。 - jonrsharpell
和11
)令人不安... - rodrigo