Python实现字符串上的switch语句

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语句。在本文中,我们使用适当的示例了解了所有三种方法。

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程