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中执行其中一个已定义的多个情况。
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-使用基于类的方法
在这种方法中,我们创建一个包含每种情况的方法的类。一旦这些方法在类中实现,我们可以调用与输入字符串相关联的相应方法。
示例
在下面的例子中,我们创建了一个名为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的字典,并将字符串Monday和Tuesday和默认值映射到它们各自的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中,我们使用不同的方法来实现switch语句,比如基于字典的方法、基于类的方法和基于lambda的方法。在这里,我们使用了适当的示例来理解这三种方法。