Python 的变量类型
可变类型 / mutable
可变类型的实例,在初始化之后允许改变其值。
>>> a = []
>>> print(a)
[]
>>> a.append('new_value')
>>> print(a)
['new_value']
但注意,如果用 = 赋值,其实是改变指向,而不是改变其实例的值
>>> a=[]
>>> print(id(a))
140323581464840
>>> a.append(1)
>>> print(id(a))
140323581464840
>>> print(a)
[1]
>>> a=[1]
>>> print(id(a))
140323582166152
可以看到,使用append,并没有改变a变量的地址并且还改变了a的数值。但是使用 = 赋值,那么地址就已经发生了改变,虽然值还是一样的
不可变类型 / immutable
这种类型的实例,在初始化之后就不允许改变其值。
但是你会看到一些变量明明可以改数值,那是为什么呢?
>>> a = 3
>>> print(a)
3
>>> a = 4
>>> print(a)
4
因为实例的值不能改变,但是对象可以改变指向,在重新赋值的时候,变量已经指向了新对象
>>> a = 3
>>> print(id(a))
140323607520352
>>> a = 4
>>> print(id(a))
140323607520384