函数传值时是传递的内存地址
比如
def add(x):
print(id(x))
x = x + [1]
print(id(x))
定义 q = [1, 2, 3]
id(q)是 2896878141960
调用 add(q)
此时,传递的是q的地址,所以函数中第一次打印时 值为 2896878141960,而在执行x = x +1时 开辟了新的空间,而此时x也指向了新的地址,所以第二次打印时 值是 2896878325512,所以这操作对原来地址的对象没有影响
But
如果要是 对可变对象的地址直接进行操作时就会出问题,比如列表上进行 append、remove等操作
x1 = [1, 2, 3]
id(x1)
def add(x)
print(id(x))
x.append(1)
print(id(x))
#执行
add(x1)
#执行结束后,x1也会发生变化
结果: