![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
1 #不可变数据类型 2 int_1 = 1 3 print(id(int_1)) 4 #OUT:140735497665600 5 int_1 = 2 6 print(id(int_1)) 7 #OUT:140735497665632 8 #id()返回int_1的唯一标识符,等同于int_1的内存地址 9 #int_1=2并不是在原来的内存地址修改值,而是在另一个内存地址存储“2”,因此变量int_1的内存地址发生了改变 10 #旧内存区域如果未被其他变量指向,那么会被废弃,并由python自动回收内存空间 11 12 #可变数据类型 13 list_1 = [1, 2, 3] 14 print(id(list_1)) 15 #OUT:3234925597192 16 list_1.append(4)#list_1添加元素4 17 print(id(list_1)) 18 #OUT:3234925597192 19 #list_1发生改变,但list_1的id并未发生改变,这表明是在原有的内存地址修改的 20 list_2 = list_1 21 print(id(list_1)) 22 #OUT:1238165312008 23 print(id(list_2)) 24 #OUT:1238165312008 25 #list_2和list_1的id相同,那么修改list_2的值,list_1的值也会发生改变, 26 #但是这种改变可能不是我们所希望的。 27 #因此,在对列表、字典这类可变数据对象进行操作时,要特别注意这种修改所产生的副作用