Python可变类型和不可变类型

 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 #因此,在对列表、字典这类可变数据对象进行操作时,要特别注意这种修改所产生的副作用
View Code
原文地址:https://www.cnblogs.com/Aoke/p/13616638.html