python的可變類型和不可變類型


Python有六種數據類型:數字類型、字符串類型、列表類型、元組類型、字典類型和集合類型

其中不可變類型包括三種:數字類型、字符串類型和元組類型

剩余三種為可變類型:列表類型、字典類型和集合類型

可變類型:
  • 可以修改對象的的值,修改后對象的內存地址不變(變量與內存地址鏈接:常量、變量、內存
  • 可變類型包括:列表、字典、可變集合
>>> s = [1, 2, 3, 4, 5]
>>> id(s)
2115225773704
>>> s[2] = "a"
>>> s
[1, 2, 'a', 4, 5]
>>> id(s)
2115225773704
>>> d = {"name": "bone", "age": 26}
>>> id(d)
2115223112656
>>> d["age"] = 25
>>> d
{'name': 'bone', 'age': 25}
>>> id(d)
2115223112656
>>> a = {1, 2, 3}
>>> id(a)
2115225769128
>>> a.add(4)
>>> id(a)
2115225769128
>>> a
{1, 2, 3, 4}
不可變類型
  • 值變了,內存地址就變了,等於重新定義
  • 在嘗試修改對象元素時,實際上是重新開辟了內存空間來存儲的
  • 不可變類型有:數值、元組、字符串、不可變集合
  • 對於不可變類型的對象,他們都沒有涉及到修改的方法,嘗試使用就會報錯
>>> a = (1,2,3)
>>> a[1] = 2
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: 'tuple' object does not support item assignment

>>> a = "bone"
>>> a[1: 3] = "x"
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: 'str' object does not support item assignment

>>> a = frozenset({1, 2, 3})
>>> a
frozenset({1, 2, 3})
>>> id(a)
2115225768456
>>> a.add(4)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
AttributeError: 'frozenset' object has no attribute 'add'


免責聲明!

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



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