1. 程式人生 > >001_python可變與不可變類型

001_python可變與不可變類型

創建 引用 -s 浮點型 1.0 value 元組 內存管理機制 ron

python的每個對象都分為可變和不可變類型。

主要的核心類型,不可變類型有數字、字符串、元組,可變類型有列表、字典。

不可變類型以int類型為例:實際上 i += 1 並不是真的在原有的int對象上+1,而是重新創建一個value為6的int對象,i引用自這個新的對象。通過id函數查看變量i的內存地址進行驗證。

# int型
>>> i = 5
>>> id(i)
1780867920
>>> i += 1
6
>>> id(i)
1780867936

>>> j = 6
>>> id(j)
1780867936

python內存管理機制的原因,使得int類型的相同數字,他們的內存一致

浮點型、字符串以及元組數值相同,內存卻不一致

# 字符串 >>> var1 = "a" >>> var1 += "b" >>> var2 = "ab" >>> id(var1) 74598496 >>> id(var2) 50818208
# 浮點型 >>> float1 = 15.10 >>> float1 += 0.15 >>> float2 = 14.24 >>> float2 += 1.01 >>> id(float1) 58247136 >>> id(float2) 58246800
# 元組 >>> tuple1 = (2, 1) >>> tuple2 = (2, 1) >>> id(tuple1) 72506344 >>> id(tuple2) 72506384

可變類型的話,以list為例。list在append之後,還是指向同個內存地址,因為list是可變類型,可以在原處修改。

# list >>> list1 = [1, 2, 3] >>> id(list1) 72578872 >>> list1 = [3, 2, 1] >>> id(list1) 72578632 >>> list1.append(0) [3, 2, 1, 0] >>> id(list1) 72578632 >>> list2 = [3, 2, 1, 0] >>> id(list2) 72579192 # 雖然list1、list2的值相同,但是指向的內存地址不同 >>> list2 = list1 # 通過list2 = list1 的賦值語句,讓他們指向同個內存地址 >>> id(list2) 72578632

001_python可變與不可變類型