1. 程式人生 > 實用技巧 >python——可變物件和不可變物件

python——可變物件和不可變物件

可變物件和不可變物件

1.list是可變物件,而字串(str)、整數、tuple等是不可變物件

2.對於可變物件l,比如 list,對 list 進行操作,list內部的內容是變化的

如:

1 >>> a=['c','b','a']
2 >>> a.sort()
3 >>> a
4 ['a', 'b', 'c']

3.對於不可變物件,比如 str,對 str 進行操作:

1 >>> a='abc'
2 >>> a.replace('a','A')  #將a替換成A,返回替換後的變數
3 '
Abc' 4 >>> a #但是變數a本身還是不變的 5 'abc'

變數a不變的原因:

當呼叫 a.replace()函式時,會建立一個新的物件,即變數b,將改變後的新字串賦值給變數b,而變數a裡面的內容不變

如下程式碼:

1 >>> a='abc'
2 >>> b=a.replace('a','A')
3 >>> b
4 'Abc'
5 >>> a
6 'abc'

要始終牢記的是,a是變數,而'abc'才是字串物件!有些時候,我們經常說,物件a的內容是'abc',但其實是指,a本身是一個變數,它指向的物件的內容才是'abc'

當我們呼叫a.replace('a','A')時,實際上呼叫方法replace是作用在字串物件'abc'上的,而這個方法雖然名字叫replace,但卻沒有改變字串'abc'的內容。相反,replace方法建立了一個新字串'Abc'並返回,如果我們用變數b指向該新字串,就容易理解了,變數a仍指向原有的字串'abc',但變數b卻指向新字串'Abc'了

變數a→‘abc’

變數b→‘Abc’

所以,對於不可變物件來說,呼叫物件自身的任意方法,都不會改變該物件的自身內容,這些方法會建立新的物件,並將返回結果指向這個新的物件中。