python中不可变的对象类型有:1、int数字类型;2、string字符串类型;3、float浮点型;4、tuple元组。
具体示例分析:
int数字类型,尝试修改数字对象。
#新建数字对象1000
>>> id(1000)
53060472L
#新建数字对象1000
>>> y = 1000
>>> id(y)
53060328L
#尝试操作修改数字对象,实际上生成新的数字对象
>>> y = y + 1
>>> y
>>> id(y)
53058744L
对不可变对象str进行操作。
>>> a = 'abc'
>>> id(a)
52053576L
#引用新生成的对象
>>> b = a.replace('a','A')
>>> id(b)
47950704L
>>> id(a)
52053576L
>>> b
'Abc'
tuple元组相关示例。
>>> t = ('a', 'b', ['A', 'B'])
>>> t
('a', 'b', ['A', 'B'])
>>> hash(t)
Traceback (most recent call last):
File "", line 1, in hash(t)
TypeError: unhashable type: 'list'
>>> t[2][0] = 'X'
>>> t[2][1] = 'Y'
>>> t
('a', 'b', ['X', 'Y'])
注意:从表面上看,tuple的元素确实变了,但其实变的不是tuple的元素,而是list的元素。