不可变对象与可改变的对象
-
不可变对象包括
- int
- tuple
- string
-
可改变的对象
- list
- dict
例子1
def change(num):
print("Function parameter ", id(num))
num = 100
print("Assigin value to num ", id(num))
if __name__ == '__main__':
A = 10
print("Origin id A ", id(A))
change(A)
print("After running function id A ", id(A))
Origin id A 4420630224
Function parameter 4420630224
从这里可以看到,只有在赋值的时候才发生了对象的改变
Assigin value to num 4420633104
After running function id A 4420630224
例子2
def chagne_list(tmp_list):
print(id(tmp_list))
tmp_list.append(3)
print(id(tmp_list))
if __name__ == '__main__':
print(id(B))
chagne_list(B)
print(id(B))
输出的四个值都是一样的,所以操作的是同一个对象,这个过程中没有产生新的对象