1. 前言
Python 以其簡潔的語法和直觀的設計受到許多程式設計師的喜愛。然而,許多人可能會驚訝地發現,Python 並沒有像其他程式語言一樣提供「switch-case」語法。因此,在 Python 中,開發者需要使用「if-elif-else」或「字典(dictionary)」來實現類似的功能。
本文將逐步介紹 Python 中傳統的條件分支方法、使用字典作為替代方案,以及 Python 3.10 引入的全新「match-case」語法。透過這些學習,您將能夠掌握在 Python 中高效實現條件分支的方法,並應用於實際的程式開發中。
2. 為什麼 Python 沒有 switch 語法?
Python 沒有採用 switch-case 語法的主要原因是其設計哲學:簡潔與可讀性。Python 的設計者一直致力於讓語言保持簡單,並避免冗長或重複的語法。雖然 switch-case 在其他語言中相當有用,但在 Python 中,透過「if-elif-else」或字典即可達成相同的功能,因此並未特別引入 switch-case 語法。
事實上,Python 的官方文件也提到,if-elif-else 語法已經足以替代 switch-case。以下是一個 C 語言的 switch-case 語法範例:
switch (value) {
case 1:
printf("Value is 1");
break;
case 2:
printf("Value is 2");
break;
default:
printf("Other value");
}
在 Python 中,我們可以使用 if-elif-else 來實現相同的功能:
value = 1
if value == 1:
print("Value is 1")
elif value == 2:
print("Value is 2")
else:
print("Other value")
透過這種方法,即使沒有 switch-case,Python 仍然能夠輕鬆處理條件分支。

3. if-elif-else 的使用範例
在 Python 中,最基本的條件分支方法是「if-elif-else」語法。這種方法能夠根據不同的條件執行不同的處理,並且非常直觀且容易理解。以下是一個典型的使用範例:
value = 100
if value < 50:
print("數值較小")
elif value < 100:
print("數值中等")
else:
print("數值較大")
在這段程式碼中,根據變數 value
的數值大小,程式會輸出不同的訊息。if-elif-else 語法讓條件判斷變得直觀且容易閱讀。
當條件增多時的問題
然而,當 if-elif-else 的層級變深,程式碼可能會變得難以閱讀。特別是當條件變得更為複雜時,使用「字典(dictionary)」來進行條件分支判斷可能會是一個更好的選擇。
4. 使用字典(dictionary)進行條件分支
在 Python 中,我們可以利用字典來模擬 switch-case 語法,這是一種簡潔且高效的方法。字典是一種儲存鍵值對(key-value pair)的資料結構,可以用來對應不同的條件與相應的處理方式。
以下的範例根據使用者輸入的數值,對應不同的輸出結果:
numbers = {1: "一", 2: "二", 3: "三"}
value = int(input("請輸入 1~3 之間的數字: "))
if value in numbers:
print(f"選擇的數字: {numbers[value]}")
else:
print("請輸入 1~3 之間的數字")
透過這種方式,即使有較多的條件,程式碼仍然能夠保持簡潔且易於維護。
使用字典的優勢
與傳統的 if-elif-else 相比,使用字典進行條件分支具有以下優勢:
- 提高可讀性:當條件數量較多時,字典可以使程式碼更易於閱讀。
- 維護更容易:新增或修改條件時,只需要更新字典內容,而不需要修改多個 if-elif-else 結構。
- 執行效率較高:字典查找的速度通常比多層級的 if-elif-else 結構更快。
5. Python 3.10 的新功能:match-case 語法
從 Python 3.10 開始,Python 引入了一種新的條件分支語法:「match-case」,它的語法與 switch-case 十分相似,可以簡潔地描述多個條件。這個新功能特別適用於模式匹配(Pattern Matching),與傳統的 if-elif-else 或字典方式相比,它可以大幅提升程式碼的可讀性和維護性。
match-case 的基本語法
以下是 match-case 語法的基本範例:
def check_value(value):
match value:
case 1:
print("選擇的是一")
case 2:
print("選擇的是二")
case _:
print("選擇的不是 1 或 2")
在這段程式碼中,變數 value
會根據不同的 case 進行對應的處理。case _
則類似於 switch-case 中的 default
,用來處理所有未被明確列出的條件。
6. match-case 的應用範例
match-case 語法不僅可以用來判斷單一變數的值,還可以用來處理更複雜的條件,例如根據列表(list)的長度或資料型態來進行模式匹配。
針對多種條件的 match-case
def process_data(data):
match data:
case [x, y]:
print(f"列表包含兩個元素: {x}, {y}")
case [x, y, z]:
print(f"列表包含三個元素: {x}, {y}, {z}")
case _:
print("列表的元素數量不符合預期")
在這個範例中,match-case 會根據列表的元素數量進行不同的處理。這樣的寫法比傳統的 if-elif-else 更加簡潔且易讀。

7. if-elif-else、字典(dictionary)、match-case 的比較
每種條件分支方法都有其優勢與缺點。以下是它們的比較:
方法 | 優點 | 缺點 |
---|---|---|
if-elif-else | 簡單直觀,適用於少量條件 | 當條件過多時,程式碼會變得冗長且難以維護 |
字典(dictionary) | 可讀性高,適用於大量條件 | 並非所有條件判斷都適用,例如需要執行額外邏輯的情況 |
match-case | 適用於多條件分支與模式匹配,程式碼簡潔 | 僅適用於 Python 3.10 以上版本 |
這張比較表可以幫助您選擇最適合的條件分支方法。特別是 match-case 語法在處理複雜的模式匹配時表現優異,能夠避免 if-elif-else 的冗長結構。
8. 總結
儘管 Python 沒有 switch-case 語法,但我們仍然可以透過 if-elif-else、字典(dictionary)、以及 Python 3.10 引入的 match-case 來實現高效的條件分支。
特別是 match-case 語法,由於其優秀的模式匹配能力,可以讓程式碼更簡潔且易於維護。因此,在開發時,根據實際需求選擇合適的條件分支方法,將有助於撰寫更高效且可讀性更高的 Python 程式碼。
透過理解這些方法,您將能夠在不同的專案需求中靈活運用它們,進一步提升程式設計的效率與品質。