列出python中可變數據類型和不可變數據類型,並簡述原理


可變類型(mutable):變量進行append、+=等這種操作后 == 改變了變量的值,而不會新建一個對象,變量引用的對象的地址也不會變化,不過對於相同的值的不同對象,在內存中則會存在不同的對象,即每個對象都有自己的地址,相當於內存中對於同值的對象保存了多份,這里不存在引用計數,是實實在在的對象。

  • list
  • dict
  • set
  • bytearray
  • user-defined classes (除非是特別定義的不可變)
a = [1,2]
b = [1,2]
print(id(a))
print(id(b))

不可變類型(immutable):改變了變量的值 == 新建了一個對象,而對於相同的值的對象,在內存中則只有一個對象(一個地址), python的id() 方法讓你明白

  • int
  • float
  • decimal
  • complex
  • bool
  • string
  • tuple
  • range
  • frozenset
  • bytes

例子

a = 3
b = 3
print(id(a))
print(id(b)) # mem addr is same with a
a = 5
print(id(a))

boolx = True
print(id(boolx))
boolx = False
print(id(boolx))

輸出

533780592600
533780592600                                                

533780592664

533780191712

533780191744
[Program finished]

 

 


免責聲明!

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



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