Python--可变与不可变数据类型

Python可变与不可变类型

可变数据类型有:list和dict

不可变数据类型有:int, float, string和tupe

对于不可变数据类型:不允许值发生变化,如果改变了变量的值,必然会创建新的对象(小整数和string类型不适用),对于值相同的变量指向的内存地址是同一个(对于string类型和256范围内的int类型是这样,但对于大整数,float型和元组不是这样)。

相同值的string类型指向的是同一个对象

>>> str1="nihao"
>>> str2="nihao"
>>> id(str1)
2405853153968
>>> id(str2)
2405853153968

改变string类型变量的值会使变量指向的内存地址发生改变

>>> str3="hello"
>>> id(str3)
2405853154864
>>> str3="nihao"
>>> id(str3)
2405853153968

对于int类型变量,如果值是0-256范围内,则指向的是同一个对象,
变量的值不在0-256范围内,则即使变量的值相同也是不同的对象

>>> n1=256
>>> n2=256
>>> id(n1)
1781304768
>>> id(n2)
1781304768
>>> n3=257
>>> n4=257
>>> id(n3)
2405852408464
>>> id(n4)
2405852408560

值相同的浮点数和元组不是同一个对象

>>> f1 = 1.1
>>> f2 = 1.1
>>> id(f1)
2405850948088
>>> id(f2)
2405850948112
>>> 
>>> t1 = (1,2,3)
>>> t2 = (1,2,3)
>>> id(t1)
2405853097272
>>> id(t2)
2405853120192

但对于不可变数据类型: 允许变量的值发生改变,改变变量的值不会新建对象,对于值相同的变量是不同的对象

>>> dict1 = {"a":1,"b":2}
>>> id(dict1)
2405852269448
>>>
>>> dict1["a"] = 12
>>> id(dict1)
2405852269448
>>> dict1
{'a': 12, 'b': 2}

你可能感兴趣的:(Python面试)