python面試題(-)可變數據類型與不可變數據類型


python3中有六個標准的數據類型:number(數字型)、string(字符串型)、list(列表)、type(元祖)、dictionary(字典)、set(集合),其中不可變類型三個:number、type、stri;剩下的三個是可變數據類型。

0x01:不可變數據類型

對於判斷是否為可變數據類型,我們可以用id函數,它的作用是獲取對象的內存地址。假如我們寫了下面兩行代碼:

>>> a=5 
>>> id(5)
1351465552

 第一行聲明了一個number類型的變量,並給他賦值為5,第二行獲取到了a這個對象的內存地址。

下面我們改變一下a的值,在id一下試試:

>>> a=5
>>> id(5)
1351465552
>>> a=6
>>> id(a)
1351465584

 可以看到當a的值被改變時,a這個number類對象的內存地址也發生了變化。也就是說,一個內存地址只能對應一個值,內存地址與值的對應關系是不能變的,這種叫不可變數據類型。同樣,字符串也是。

>>> s='qwer'
>>> id(s)
2374200496792
>>> s='qwr'
>>> id(s)
2374200498976

 元祖里面的值不能被修改,所以也為不可變數據類型,但如果元祖里含有列表的話,列表里面的值可以被修改:

>>> t=(1,2,3,[4,5,6])
>>> t[3]
[4, 5, 6]
>>> t[3][1]
5
>>> t[3][1]=6
>>> t[3]
[4, 6, 6]

 0x02:可變數據類型

可變數據類型就是當對象的值改變是,對象的內存地址不會改變。用list試一下

>>> a=[4,5,6]
>>> id(a)
2374200503880
>>> a[1]
5
>>> a[1]=6
>>> a[1]
6
>>> id(a)
2374200503880

但是你如果像下面這樣寫的話,那地址就會改變了。

>>> a=[1,2,3]
>>> id(a)
2374200502984
>>> a=[4,5,6]
>>> id(a)
2374200503880

 因為這樣寫的話,就不是改變a的值了,此時的a已經不再是上面哪一個了,它是一個新的list對象

(ps:本人太菜,若有錯誤的地方歡迎大佬隨時責罵。。。。xixixii)


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM