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的數值。但是使用 = 賦值,那么地址就已經發(fā)生了改變,雖然值還是一樣的
不可變類型 / immutable
這種類型的實例,在初始化之后就不允許改變其值。
但是你會看到一些變量明明可以改數值,那是為什么呢?
>>> a = 3
>>> print(a)
3
>>> a = 4
>>> print(a)
4
因為實例的值不能改變,但是對象可以改變指向,在重新賦值的時候,變量已經指向了新對象
>>> a = 3
>>> print(id(a))
140323607520352
>>> a = 4
>>> print(id(a))
140323607520384
python 的可變/不可變變量表

1560851873003.png