这篇文章主要介绍了Python如何实现switch/case语句,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。
可以使用if…elif…elif..else序列来代替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选项。
如果在一个类中,不确定要使用哪种方法,可以用一个调度方法在运行的时候来确定。代码如下:
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
感谢你能够认真阅读完这篇文章,希望小编分享的“Python如何实现switch/case语句”这篇文章对大家有帮助,同时也希望大家多多支持亿速云,关注亿速云行业资讯频道,更多相关知识等着你来学习!
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。