Python函数参数为列表问题

def ADD(a):
        print(3,a,hex(id(a)))
        a.remove(2)
        print(3,a,hex(id(a)))
        a=a.append(10)
        print(3,a,hex(id(a)))
        return a
a=[1,2,3]
print(1,a,hex(id(a)))
b=ADD(a)
print(2,a,hex(id(a)))
print(2,b,hex(id(b)))

函数传参的时候,如果参数是列表,那么相当于是引用了。即形参和实参用的是同一个地址的内容,一旦修改也是直接修改对应地址的内容。
而在Python中,一旦形参a重新进行赋值操作,不论赋值为什么,地址都将改变。
但是这个时候,实参a,则不会相应更改,因为它所指向的地址还在原来的位置。

posted @ 2024-04-24 18:46  Danlis  阅读(59)  评论(0编辑  收藏  举报