Python的可變和不可變型別

2022-06-26 13:09:07 字數 2186 閱讀 6449

一、可變型別(不可雜湊型別就是可變型別-->unhashable)

值改變,id不變,證明改的是原值,證明原值是可以改變的。

總結:list,dict{},都為可變型別,整體的位址不變,變的是裡面的值,針對字典多說點:key必須是不可變型別,value可以是任意型別。

# list是可變型別

l=['

aaa','

bbb','

ccc'

]print(id(l)) #

-->31194624

l[0]= 2

print(l) #

[2, 'bbb', 'ccc']

print(id(l)) #

-->31194624

l[1] =true

print(l) #

[2, true, 'ccc']

print(id(l)) #

-->31194624

l[2] = [4,5,6,]

print(l) #

[2, true, [4, 5, 6]]

print(id(l)) #

-->31194624

dict 可變型別

dic=

print(id(dic)) #

--> 31210112

dic['

k1']=3333333333

print(dic) #

print(id(dic)) #

--> 31210112

#

關於字典補充:

#定義:{}內用逗號分隔開多key:value,

#其中value可以是任意型別

#但是key必須是不可變型別

dic=

}print

(id(dic))

#dic=

}print

(id(dic))

#print(dic[3.3])

#dic= # --> typeerror: unhashable type: 'list'

#dic=:33333333} # --> typeerror: unhashable type: 'dict'

#總結:不可雜湊型別就是可變型別

二、不可變型別

值改變,id也改變,證明是產生新的值,壓根沒有改變原值,證明原值是不可以被修改的。

#

int是不可變型別

x=10

print(id(x)) -->8791237908416x=11 #

產生新值

print(id(x)) -->8791237908448

float是不可變型別

x=3.1

print(id(x)) #

-->30373680

x=3.2

print(id(x)) #

-->34764944

str是不可變型別

x="abc

"print(id(x)) #

-->31187056

x='gggg

'print(id(x)) #

-->4718128

bool不可變

a =true

print(id(a)) #

-->8791233238864

b =true

print(id(b)) #

-->8791233238864

c =false

print(id(c)) #

-->8791233238896

d =false

print(id(d)) #

-->8791233238896

print(id(true))  # -->8791233238864

print(id(false)) # -->8791233238896

總結:int型別,float型別,str型別,bool型別都是不可變型別,都被設計成了不可分割的整體,不能夠被改變。

為什麼說不可分割?例如:10 為不可分割,為什麼10 + 1 =11,11是乙個新的不可分割的值。

python不可變型別和可變型別

python變數可以分為兩種型別 不可變型別 數字 字串 元組 不可變集合 可變型別 列表 字典 可變集合 python所宣告的變數都以物件的形式存在,存在於機器的固定記憶體之中。可以理解為變數名為物件的指標 如宣告a 3,則a指向儲存3的空間,python通過使用計數器的方式來判斷空間的引用情況,...

python 可變型別和不可變型別

1.什麼是不可變型別 變數對應的值中的資料是不能被修改,如果修改就會生成乙個新的值從而分配新的記憶體空間。不可變型別 數字 int,long,float 布林 bool 字串 string 元組 tuple 2.什麼是可變型別 變數對應的值中的資料可以被修改,但記憶體位址保持不變。可變型別 列表 l...

Python 可變型別和不可變型別總結

可變型別 list,set,dict 不可變型別 int,str,tuple 物件的三要素 value,type,id 判斷type是否相同 true 判斷value是否相同 true 判斷id是否相同 a abc b 123 print id a id b b abc print a is b,i...