我仍然对如何在python中传递参数感到困惑。 我认为非原始类型是通过引用传递的,但为什么下面的代码不能打印[1]呢?
def listTest(L):
L = L + [1]
def main:
l = []
listTest(l)
print l #prints []
我怎么能让它发挥作用。 我想我需要通过引用传递“指向L的指针”
答案 0 :(得分:4)
在listTest()
中,您重新绑定 L
到新的list
对象; L + [1]
创建一个新对象,然后将其分配给L
。这样就保留了list
之前引用的原始L
对象。
您需要通过调用list
上的方法直接操纵L
引用的list.append()
对象,例如def listTest(L):
L.append(1)
:
list.extend()
或者您可以使用def listTest(L):
L.extend([1])
:
def listTest(L):
L += [1]
或者您可以使用就地分配,这为可变类型提供了就地更改对象的机会:
{{1}}