6.1 變數是引用
在 Python 裡,變數是對物件的引用,而不是變數本身。這意味著,當你在 Python 中創建變數時,你只是創造了一個指向記憶體中物件的引用。
這個語言特性的影響在於操作變數時的關鍵,尤其是將物件傳遞給函數或將其賦值給其他變數時。
當你創建變數並賦值時,Python 會在記憶體中為這個值創建一個物件,並讓變數指向這個物件。如果你將一個變數賦值給另一個變數, 新的變數將會指向與原變數同樣的物件。這意味著,如果物件是可變的,通過一個變數進行的修改,會影響到另一個變數。
示例:
a = [1, 2, 3]
b = a
b.append(4)
print(a) # 顯示: [1, 2, 3, 4]
我們在 b
中添加了數字 4
,但它也被添加到了 a
的列表中,因為兩個變數其實只是對物件列表 [1, 2, 3] 的引用。
6.2 不可變的物件
在 Python 中,物件分為 可變 和 不可變。可變的物件,如列表和字典,可以在創建後進行修改。
不可變的物件,例如字串和數字,在創建後不能被修改。當你處理不可變物件時,變更會導致創建一個新物件:
賦值永遠不會改變物件:
a = 5 # a 儲存對物件 5 的引用
b = a # b 也儲存對物件 5 的引用
b = 3 # 現在 b 儲存對物件 3 的引用
print(a) # 顯示: 5
可以透過調用函數來改變物件:
a = [1, 2, 3]
b = a
b.append(4)
print(a) # 顯示: [1, 2, 3, 4]
但有些不可變物件有它們自己的函數。這些函數不會改變原物件,而是返回一個包含新結果的新物件:
name = "Alex"
print(name) # 顯示: Alex
name2 = name.lower()
print(name2) # 顯示: alex
字串是不可變物件。雖然字串有方法,但這些方法從不改變字串物件,而是總是返回一個新的字串(新物件)。舊的物件保持不變。
6.3 處理 None 類型
在 Python 中,有一種特殊的數據類型表示沒有值——None
。它用於表示空變數或作為沒有返回值的函數的返回值。理解 None 對於管理程序行為非常重要,尤其是在條件語句和數據處理的背景下。
None 的基本使用
None
是 NoneType
類別的唯一實例。它用於指示變數無值。在條件中, None
被評估為假(False
)。
a = None
if a:
print("a is True")
else:
print("a is None or False")
與 None 的比較
應使用 is
操作符來檢查變數是否為 None,而不是 ==。操作符 is
檢查的是身份,而不是值的相等性。
a = None
if a is None:
print("a is None")
else:
print("a has value")
None 在函數中
None
常用於不需要顯式返回值的函數。如果一個函數沒有返回值,它會隱式地返回 None
。
def func():
print("This function returns None")
result = func()
print(result) # 顯示: None
None 和列表
None
可以用在列表、元組或其他集合中,以指示某個位置沒有元素。
my_list = [1, None, 3]
print(my_list) # 顯示: [1, None, 3]
GO TO FULL VERSION