Python实现switch/case语句

 更新时间:2021年08月11日 09:45:13   作者:liulijun-dev  
与Java、C\C++等语言不同,Python中是不提供switch/case语句的,这一点让我感觉到很奇怪。我们可以通过如下几种方法来实现switch/case语句

使用if…elif…elif…else 实现switch/case

可以使用if…elif…elif..else序列来代替switch/case语句,这是大家最容易想到的办法。但是随着分支的增多和修改的频繁,这种代替方式并不很好调试和维护。

使用字典 实现switch/case

可以使用字典实现switch/case这种方式易维护,同时也能够减少代码量。如下是使用字典模拟的switch/case实现:

def num_to_string(num):
    numbers = {
        0 : "zero",
        1 : "one",
        2 : "two",
        3 : "three"
    }
    return numbers.get(num, None)
if __name__ == "__main__":
    print num_to_string(2)
    print num_to_string(5)

执行结果如下:

two
None

Python字典中还可以包括函数或Lambda表达式,代码如下:

def success(msg):
    print msg
def debug(msg):
    print msg
def error(msg):
    print msg
def warning(msg):
    print msg
def other(msg):
    print msg
def notify_result(num, msg):
    numbers = {
        0 : success,
        1 : debug,
        2 : warning,
        3 : error
    }
    method = numbers.get(num, other)
    if method:
        method(msg)
if __name__ == "__main__":
    notify_result(0, "success")
    notify_result(1, "debug")
    notify_result(2, "warning")
    notify_result(3, "error")
    notify_result(4, "other")

执行结果如下:

success
debug warning error
other

通过如上示例可以证明能够通过Python字典来完全实现switch/case语句,而且足够灵活。尤其在运行时可以很方便的在字典中添加或删除一个switch/case选项。

在类中可使用调度方法实现switch/case

如果在一个类中,不确定要使用哪种方法,可以用一个调度方法在运行的时候来确定。代码如下:

class switch_case(object):
    def case_to_function(self, case):
        fun_name = "case_fun_" + str(case)
        method = getattr(self, fun_name, self.case_fun_other)
        return method
    def case_fun_1(self, msg):
        print msg
    def case_fun_2(self, msg):
        print msg
    def case_fun_other(self, msg):
        print msg
if __name__ == "__main__":
    cls = switch_case()
    cls.case_to_function(1)("case_fun_1")
    cls.case_to_function(2)("case_fun_2")
    cls.case_to_function(3)("case_fun_other")

执行结果如下:

case_fun_1
case_fun_2
case_fun_other

总结

就个人来说,使用字典来实现switch/case是最为灵活的,但是理解上也有一定的难度。

本篇文章就到这里了,希望能给你带来帮助,也希望您能够多多关注脚本之家的更多内容!

相关文章

  • 详解Python IO编程

    详解Python IO编程

    这篇文章主要介绍了Python IO编程的相关资料,文中讲解非常细致,代码帮助大家更好的理解和学习,感兴趣的朋友可以了解下
    2020-07-07
  • 利用keras使用神经网络预测销量操作

    利用keras使用神经网络预测销量操作

    这篇文章主要介绍了利用keras使用神经网络预测销量操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-07-07
  • Python处理时间日期坐标轴过程详解

    Python处理时间日期坐标轴过程详解

    这篇文章主要介绍了Python处理时间日期坐标轴过程详解,当日期数据作为图表的坐标轴时通常需要特殊处理,应为日期字符串比较长,容易产生重叠现象,需要的朋友可以参考下
    2019-06-06
  • Python基础教程之浅拷贝和深拷贝实例详解

    Python基础教程之浅拷贝和深拷贝实例详解

    这篇文章主要介绍了Python基础教程之浅拷贝和深拷贝实例详解的相关资料,需要的朋友可以参考下
    2017-07-07
  • Pycharm汉化两种方法(pycharm改为中文版)

    Pycharm汉化两种方法(pycharm改为中文版)

    PyCharm是一款流行的Python开发环境,提供了丰富的功能和工具,使得Python的开发和调试变得更加方便和高效,下面这篇文章主要给大家介绍了Pycharm汉化的两种方法,所谓汉化就是将pycharm改为中文版,需要的朋友可以参考下
    2023-06-06
  • Python logging模块handlers用法详解

    Python logging模块handlers用法详解

    这篇文章主要介绍了Python logging模块handlers用法详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-08-08
  • Python脚本判断 Linux 是否运行在虚拟机上

    Python脚本判断 Linux 是否运行在虚拟机上

    这篇文章主要介绍了Python脚本判断 Linux 是否运行在虚拟机上,本文讲解了判断 OpenVZ/Xen PV/UML、判断 VMware/Xen HVM/KVM、判断 VirtualBox/Virtual PC等方法,需要的朋友可以参考下
    2015-04-04
  • Python dict的常用方法示例代码

    Python dict的常用方法示例代码

    这篇文章主要介绍了Python dict的常用方法,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-06-06
  • Python实现随机生成迷宫并自动寻路

    Python实现随机生成迷宫并自动寻路

    最近在学习Python,正好今天在学习随机数,本文实现了Python实现随机生成迷宫并自动寻路,感兴趣的可以了解一下
    2021-06-06
  • python Gooey库将命令行程序转换成图形用户界面GUI应用

    python Gooey库将命令行程序转换成图形用户界面GUI应用

    这篇文章主要为大家介绍了python Gooey库将命令行程序转换成图形用户界面GUI应用详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2024-01-01

最新评论