目录
传递不可变对象是浅拷贝
传递参数是不可变对象 ( eg: int, float, 字符串, 元组, 布尔值 ), 实际上传递的还是对象的引用; 但在”写操作”时, 会创建一个新的对象拷贝; 这个拷贝使用的是”浅拷贝”, 不是”深拷贝”;
#传递不可变对象时,不可变对象里面包含了子对象是可变的,则方法内修改可变对象,源对象也发生了变化
a = (10,20,[5,6]) #元组内含列表
print("a:",a)
print("a:",id(a))
def test01(m):
print("m:",id(m))
m[2][0]=888
print(m) #新对象
print("m:",id(m))
test01(a)
print(a)
输出:
D:\wwwroot\pyiteam\venv\Scripts\python.exe D:/wwwroot/pyiteam/mypy01.py
a: (10, 20, [5, 6])
a: 20404360
m: 20404360
(10, 20, [888, 6])
m: 20404360
(10, 20, [888, 6])
Process finished with exit code 0