當前位置:成語大全網 - 書法字典 - Python可變的不可變類型

Python可變的不可變類型

Python的數據類型不同於C,有壹個分類標準,mutable)/ immutable。

我理解的可變性,就是內存中的值是否可以改變。如果是不可變的,在對對象本身進行操作時,必須申請內存中的另壹個區域(因為舊區域#是不可變的#),舊區域將被丟棄(如果有其他引用,引用數將減少1,類似於unix下的硬鏈接)。如果是可變的,在對壹個對象進行操作時,不需要在別處申請內存,只需要在對象後連續(+/-)申請,即其地址保持不變,但面積會變長或變短。

不可變類型:字符串、整數、元組

& gt& gt& gtvar1 = 1

& gt& gt& gtvar2 = var1

& gt& gt& gtvar1,var2

(1, 1)

& gt& gt& gtId (var 1)和Id (var 2) #都是指具有相同ID的同壹個內存區域。

(21200672, 21200672)

& gt& gt& gtvar1 += 1

& gt& gt& gtvar1,var2

(2, 1)

& gt& gt& gtId(var1),id(var2)#因為var1和var2的數據是不可變的,var1+1之後,申請另壹個區域,ID (var 1)發生了變化,id(var2)不變。對於該區域,請參考。

(21200660, 21200672)

& gt& gt& gt

變量類型:列表、字典

& gt& gt& gtlst1 =

& gt& gt& gtlst2 = lst1

& gt& gt& gtlst1,lst2

([1, 2, 3], [1, 2, 3])

& gt& gt& gtid(lst1),id(lst2)

(28497360, 28497360)

& gt& gt& gtLst1.append(4)#變量類型,追加後,地址保持不變。

& gt& gt& gtlst1,lst2

([1, 2, 3, 4], [1, 2, 3, 4])

& gt& gt& gtId (lst1),ID (lst2) # lst1,lst2總是指向同壹個區域。

(28497360, 28497360)

& gt& gt& gt

操作這種類型時要特別小心。dict鍵不需要變量類型,函數傳遞參數也不需要變量類型。

例如:

& gt& gt& gtdef dis(arg=[]):

...arg.append('1 ')

...打印參數

...

& gt& gt& gtdis()

['1']

& gt& gt& gtdis()

['1', '1']

& gt& gt& gtdis()

['1', '1', '1']

& gt& gt& gt

有關更多信息,請參考復制模塊。

==結束= =