一、可變型別(不可雜湊型別就是可變型別-->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=
(id(dic))
#dic=
(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)) # -->8791233238864print(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...