Python实现字符串上的switch语句
在Python中,我们可以使用基于字典、基于类和基于lambda的方法来实现字符串上的switch语句。与其他编程语言(如Java、C++等)不同,Python没有内置的switch语句。在本文中,我们将看到如何使用基于字典、基于类和基于lambda的方法来实现Python中的switch语句功能。
其他编程语言中的Switch语句
在了解Python如何实现switch语句之前,我们需要了解如何使用switch语句以及它们在其他编程语言中的实现方式。
switch语句是一种条件语句,它评估表达式并根据其值执行不同的操作。它包含多个代码块,这些代码块根据评估的表达式执行。
语法
switch(expression) {
case constant-expression :
statement(s);
break; /* 可选的 */
case constant-expression :
statement(s);
break; /* 可选的 */
/* 您可以拥有任意数量的case语句 */
default : /* 可选的 */
statement(s);
}
switch()语句接受一个表达式,并根据该表达式/值执行在switch case中定义的多个case之一。
在Python中实现Switch语句
方法1 – 使用基于字典的方法
在该方法中,我们创建一个将字符串值映射到相应函数的字典。一旦完成映射,我们就可以调用关联输入字符串的函数。
示例
在下面的示例中,我们为打印星期一和星期二创建了一个单独的函数,并创建一个默认函数,以防天不是星期一或星期二。然后,我们使用Python字典将字符串Monday和Tuesday映射到它们的相应函数。
def monday():
print("今天是星期一")
def tuesday():
print("今天是星期二")
def default():
print("今天不是星期一或星期二")
switch = {
"Monday": monday,
"Tuesday": tuesday,
}
day = "Monday"
switch.get(day, default)()
输出
今天是星期一
方法2 – 使用基于类的方法
在该方法中,我们创建一个包含每个case的方法的类。一旦在类内实现了这些方法,我们就可以调用与输入字符串相关联的相应方法。
示例
在下面的示例中,我们创建了一个包含打印不同日期(如星期一和星期二)的方法和一个默认方法(天既不是星期一也不是星期二)的switch类。然后,我们可以调用getattr()方法以获取传递的字符串相关联的方法。
class Switch:
def monday(self):
print("今天是星期一")
def tuesday(self):
print("今天是星期二")
def default(self):
print("今天不是星期一或星期二")
switch = Switch()
day = "Monday"
getattr(switch, day.lower(), switch.default)()
输出
今天是星期一
方法3 – 使用基于lambda的方法
在该方法中,我们创建一个将字符串值映射到相应lambda函数的字典。然后,我们可以调用与输入字符串相对应的lambda函数。
示例
在下面的示例中,我们创建了一个包含要将星期一、星期二和默认项映射到相应lambda函数的switch字典。然后,我们调用getattr()方法以获取与输入字符串day相关联的方法。
switch = {
"Monday": lambda: print("今天是星期一"),
"Tuesday": lambda: print("今天是星期二"),
"default": lambda: print("今天既不是星期一也不是星期二")
}
day = "Monday"
switch.get(day, switch["default"])()
输出
今天是星期一
结论
Python没有内置的switch语句实现功能,所以在Python中,我们使用基于字典的方法、基于类的方法和基于lambda的方法来实现switch语句。在本文中,我们使用适当的示例了解了所有三种方法。