Python字串實現switch語句
在Python中,我們可以使用基於字典的方法、基於類的方法和基於lambda的方法來實現字串的switch語句。與Java、C++等其他程式語言不同,Python沒有內建的switch語句。在本文中,我們將學習如何使用基於字典的方法、基於類的方法和基於lambda的方法在Python中實現switch語句的功能。
其他程式語言中的switch語句
在瞭解Python如何實現switch語句之前,我們需要了解switch語句的工作原理以及如何在其他程式語言中實現。
switch語句是一種條件語句,它評估一個表示式,並根據其值執行不同的操作。它包含幾個程式碼塊case,這些程式碼塊根據已評估的表示式執行。
語法
switch(expression) {
case constant-expression :
statement(s);
break; /* optional */
case constant-expression :
statement(s);
break; /* optional */
/* you can have any number of case statements */
default : /* Optional */
statement(s);
}
switch()語句接受一個表示式,並根據該表示式/值的評估結果執行switch case中定義的多個case中的一個。
在Python中實現switch語句
方法1 - 使用基於字典的方法
在這種方法中,我們建立一個字典,將字串值對映到相應的函式。對映完成後,我們可以呼叫與輸入字串關聯的函式。
示例
在下面的示例中,我們建立了單獨的函式來列印星期一和星期二,如果日期既不是星期一也不是星期二,則使用預設函式。然後,我們使用Python字典將字串“星期一”和“星期二”與其對應的函式對映。
def monday():
print("Today is Monday")
def tuesday():
print("Today is Tuesday")
def default():
print("Today is not Monday or Tuesday")
switch = {
"Monday": monday,
"Tuesday": tuesday,
}
day = "Monday"
switch.get(day, default)()
輸出
Today is Monday
方法2 - 使用基於類的方法
在這種方法中,我們建立一個類,其中包含每個case的方法。實現類中的方法後,我們可以呼叫與輸入字串關聯的相應方法。
示例
在下面的示例中,我們建立了一個名為switch的類,其中包含用於列印不同日期(如星期一和星期二)的方法,以及如果日期既不是星期一也不是星期二的預設函式。然後,我們可以呼叫getattr()方法來獲取與正在傳遞的相應字串關聯的方法。
class Switch:
def monday(self):
print("Today is Monday")
def tuesday(self):
print("Today is Tuesday")
def default(self):
print("Today is not Monday or Tuesday")
switch = Switch()
day = "Monday"
getattr(switch, day.lower(), switch.default)()
輸出
Today is Monday
方法3 - 使用基於lambda的方法
在這種方法中,我們建立一個字典,將字串值對映到相應的lambda函式。然後,我們可以呼叫與輸入字串關聯的lambda函式。
示例
在下面的示例中,我們建立了一個名為switch的字典,並將字串“星期一”和“星期二”以及預設值對映到它們各自的lambda函式。然後,我們呼叫getattr()方法來獲取與輸入字串day關聯的方法。
switch = {
"Monday": lambda: print("Today is Monday"),
"Tuesday": lambda: print("Today is Tuesday"),
"default": lambda: print("Today is not Monday or Tuesday")
}
day = "Monday"
switch.get(day, switch["default"])()
輸出
Today is Monday
結論
Python沒有像其他程式語言那樣內建函式來實現switch語句。因此,在Python中,我們使用不同的方法,如基於字典的方法、基於類的方法和基於lambda的方法來實現switch語句。在本文中,我們使用適當的示例理解了所有三種方法。
資料結構
網路
RDBMS
作業系統
Java
iOS
HTML
CSS
Android
Python
C語言程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP