1、不可变对象的参数引用,对象不变,创建新的对象进行运算,id会变化
e=100
print("看e的变化,初始值100")
def t1(m):
print("初始的id:",id(m))
m=m+200
print("+200现在的m:",m)
print("+200后的id:",id(m))
t1(e)
print("现在的e:",e,id(e))
结果:
看e的变化,初始值100
初始的id: 140733182619120
+200现在的m: 300
+200后的id: 3041231267120
现在的e: 100 140733182619120
不可变对象有:数字、元组、字符串、function等
2、可变对象的引用,不创建新的对象,直接引用新的对象,id不变
f=[10,20]
print("看f的变化,初始值",f)
def t2(m):
print("初始的id:",id(m))
m.append(30)
t2(f)
print("添加30现在的f:",f)
print("现在f的id:",id(f))
结果:
看f的变化,初始值 [10, 20]
初始的id: 2168109111304
添加30现在的f: [10, 20, 30]
现在f的id: 2168109111304
可变对象有:列表,字典,集合、自定义的对象等