您当前的位置:首页 > IT编程 > python
| C语言 | Java | VB | VC | python | Android | TensorFlow | C++ | oracle | 学术与代码 | cnn卷积神经网络 | gnn | 图像修复 | Keras | 数据集 | Neo4j | 自然语言处理 | 深度学习 | 医学CAD | 医学影像 | 超参数 | pointnet | pytorch | 异常检测 | Transformers | 情感分类 | 知识图谱 |

自学教程:Python实现switch/case语句

51自学网 2021-10-30 22:23:23
  python
这篇教程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 msgdef debug(msg):    print msgdef error(msg):    print msgdef warning(msg):    print msgdef other(msg):    print msgdef 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 msgif __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是最为灵活的,但是理解上也有一定的难度。

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


python利用opencv如何实现答题卡自动判卷
让你一文弄懂Pandas文本数据处理
万事OK自学网:51自学网_软件自学网_CAD自学网自学excel、自学PS、自学CAD、自学C语言、自学css3实例,是一个通过网络自主学习工作技能的自学平台,网友喜欢的软件自学网站。