我运行了以下代码:
def a(x):
x = x+[4]
b = [1, 2, 3]
a(b)print(b)
得到结果如下:
[1, 2, 3]
此时实参是可变对象(列表)啊?为何我改变了形参的值后,实参的值不改变?这个时侯是值传递还是引用传递?
您这种操作并不是直接改变形参的值,因为形参x和x=x+[4]中的第一个x并不是同一个对象。他们的内容地址是不一样的,所以实参的值不改变。如果换成书中的x+=[4]就改变了。