主页 > 知识库 > Python实现switch/case语句

Python实现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基础之python循环控制语句break/continue详解
  • C语言之初始if语句详解
  • C语言入门篇--学习选择,if,switch语句以及代码块
  • 如何用c++表驱动替换if/else和switch/case语句
  • 论一条select语句在MySQL是怎样执行的
  • C语言中常见的几种流程控制语句
  • 一篇文章带你了解JavaScript-语句
  • C语言进阶教程之循环语句缺陷详析
  • C语言控制语句之 循环
  • mybatis中sql语句CDATA标签的用法说明
  • JavaScript中三种for循环语句的使用总结(for、for...in、for...of)
  • golang switch语句的灵活写法介绍
  • C 语言基础之C 语言三大语句注意事项

标签:乐山 沈阳 长治 河南 上海 新疆 沧州 红河

巨人网络通讯声明:本文标题《Python实现switch/case语句》,本文关键词  ;如发现本文内容存在版权问题,烦请提供相关信息告之我们,我们将及时沟通与处理。本站内容系统采集于网络,涉及言论、版权与本站无关。
  • 相关文章
  • 收缩
    • 微信客服
    • 微信二维码
    • 电话咨询

    • 400-1100-266