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'
