在Python中,一切皆為物件。
甚至基本資料型別(整數、字串、浮點數等)的值也都是物件。串列是物件,元組、字典等等都是物件。
物件具有屬性和方法,可以使用點語法來存取它們。
例如,嘗試定義一個新的 int
型別的變數:
age = 8
現在,age
可以存取所有 int
物件的屬性和方法。
例如存取該數字的實部和虛部:
print(age.real) # 8
print(age.imag) # 0
print(age.bit_length()) # 4
存放串列值的變數則有不同的一組方法:
items = [1, 2]
items.append(3)
items.pop()
方法的可用性取決於值的類型。
Python 提供的 id()
全域函數可讓您檢查特定物件在內存中的位置。
id(age) # 140170065725376
你的記憶體位置將會不同,這只是一個示範
如果將不同的值分配給變數,它的位置將會變化,因為變數的內容已被替換為另一個位於記憶體中的位置的值:
age = 8
print(id(age)) # 140535918671808
age = 9
print(id(age)) # 140535918671840
但如果使用物件的方法修改物件,其位置將保持不變:
items = [1, 2]
print(id(items)) # 140093713593920
items.append(3)
print(items) # [1, 2, 3]
print(id(items)) # 140093713593920
只有在將變數重新分配給另一個值時,位置才會變化。
某些物件是可變的,而某些物件則是不可變的。這取決於物件本身。如果物件提供了變更其內容的方法,那麼它就是可變的。否則,它就是不可變的。Python 定義的大多數類型都是不可變的。例如,int
是不可變的。它沒有改變值的方法。如果您使用以下方式增加值:
age = 8
age = age + 1
#或者
age += 1
並且使用 id(age)
檢查,您會發現 age
指向不同的記憶體位置。原始值沒有變異,我們切換到了另一個值。