可變數據類型&不可變數據類型


不同的變量在內存中有不同的存儲空間,每個存儲空間都有一個ID

>>> a = 32
>>> id(a)   # 查看ID
1571185856
>>> b = a
>>> id(b)
1571185856

  聲明一個變量a,再把a的值賦值給b,得到a,b兩個變量,但是ID相同,即指向同一個內存地址,就像以前的人起名字,名、字、號。

  那么對b重新賦值呢

>>> b = 33
>>> id(b)
1571185888
>>> id(a)
1571185856

  a還是原來的ID,但是b變了。他把名字改了,但是另外一個人恰好又起了這個名字。這兩個名字指的就是兩個人了。

 

  下面進入正題,什么是可變數據類型呢?變量的值改變但是ID不變,反之則是不可變數據類型

  可變數據類型:列表、字典、集合

>>> name_list = ['alex', 'mary']
>>> id(name_list)
2463315069192
>>> name_list[0] = ['eric']
>>> id(name_list)
2463315069192
>>> name_list.append('jake')
>>> name_list
[['eric'], 'mary', 'jake']
>>> id(name_list)
2463315069192
列表
>>> person = {'name': 'alex', 'age': 24}
>>> id(person)
2463314404192
>>> person['gender'] = 0
>>> person
{'name': 'alex', 'age': 24, 'gender': 0}
>>> id(person)
2463314404192
字典

  不可變數據類型是不可修改的,硬要改的話只能是重新賦值。

>>> name = 'jake'
>>> id(name)
2463315000432
>>> name.replace('e', 'ie')
'jakie'
>>> id(name)
2463315000432  # id沒變
>>> name
'jake'  
>>> name = name.replace('e', 'ie')
>>> id(name)
2463314429184  #重新賦值,ID變化,name也變
>>> name
'jakie'  
字符串

  元組和列表類似,有索引,如果像改列表一樣嘗試修改元組的話直接報錯

>>> name_tuple = ('alex', 'maria')
>>> id(name_tuple)
2463314574664
>>> name_tuple[0]
'alex'
>>> name_tuple[0] = 'a'
Traceback (most recent call last):
  File "<pyshell#39>", line 1, in <module>
    name_tuple[0] = 'a'
TypeError: 'tuple' object does not support item assignment
元組

 

 

 

hash:不可變數據類型才能被hash

 


免責聲明!

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



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