python可變型別與不可變型別

2021-08-09 20:28:34 字數 1359 閱讀 4103

學習版本3.5.2

python的基礎型別數值、字串和元組都是不可變型別,列表和字典時可變型別

1.number、字串

id(1) #4297546560

id(2) #4297546592

a = 1

id(a) #4297546560

a = 2

id(a) #4297546592

b = 1

id(b) #4297546560

str1 = 'hello'

id(str1) #4314969344

str2 = 'hello'

id(str2) #4314969344

str1 = 'world'

id(str1) #4314969512

當你給a賦值為1的時候,相當於給記憶體中的1加上了乙個名叫a的標籤,改變a的值的時候就像是把名叫a的標籤撕下來貼在了記憶體中的2上面,你不能通過賦值操作把記憶體中的1改為其它的數值。

2.元組

a = (1,2,3)

id(a) #4314976760

a = (2,3,4)

id(a) #4314977048

b = (1,2,3)

id(b) #4314976760

b[1] #2

b[1] = 3

#typeerror: 'tuple' object does not support item assignment

對於元組整體的賦值情況與數值和字串一致,元組的元素是不允許修改的

3.列表和字典

a = [1,2,3]

id(a) #4314937672

b = a

id(b) #4314937672

b = [1,2,3]

id(b) #4314937928

a[1] #2

a[1] = 4

a #[1, 4, 3]

id(a) #4314937672

c = 

id(c) #4303008136

d = c

id(d) #4303008136

d =

id(d) #4314963144

c['a'] #1

c['a'] = 3

c #id(c) #4303008136

對於列表和字典,a=[1,2,3]與b=[1,2,3]在記憶體中存在了兩個位置,對它們進行修改就是對對應位置記憶體裡面存的資料進行了修改,b=a相當於給a對應的位址貼上了b的標籤。

python可變型別與不可變型別

不可變資料型別在第一次宣告賦值的時候,會在記憶體中開闢一塊空間,用來存放這個變數被賦的值,而這個變數實際上儲存的,並不是被賦予的這個值,而是存放這個值所在空間的記憶體位址,通過這個位址,變數就可以在記憶體中取出資料了.所謂不可變就是說,我們不能改變這個資料在記憶體中的值,所以當我們改變這個變數的賦值...

Python 可變型別與不可變型別

可變型別 值改變,id不變,證明改的是原值,證明原值是可以被改變的 不可變型別 值改變,id也變了,證明是產生新的值,壓根沒有改變原值,證明原值是不可以被修改的 x 10print id x x 11 print id x 將x的值修改後,原值 10 無法被改變,在記憶體中建立新的位址儲存 11 並...

Python可變型別與不可變型別

可變型別 可以通過一些操作來改變自身的值。例如 列表是一種可變型別,我們可以通過索引來改變的值 通過呼叫方法改變他的值 通過del關鍵字來改變他的值。不可變的型別 不能通過這些操作來改變他的值。例如 字串是一種不可變的型別,不能通過索引來改變他的值 呼叫字串的方法會返回乙個新的字串,並不改變原來的值...