Python实现switchcase语句
⽬录
使⽤if…elif…elif…else 实现switch/case
使⽤字典实现switch/case
在类中可使⽤调度⽅法实现switch/case
总结
使⽤if…elif…elif…else 实现switch/case
可以使⽤if…elif…lse序列来代替switch/case语句,这是⼤家最容易想到的办法。但是随着分⽀的增多和修改的频繁,这种代替⽅式并不很好调试和维护。
使⽤字典实现switch/case
可以使⽤字典实现switch/case这种⽅式易维护,同时也能够减少代码量。如下是使⽤字典模拟的switch/case实现:
def num_to_string(num):
numbers = {
0 : "zero",
1 : "one",
2 : "two",
3 : "three"
}
(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 = (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)python中lambda怎么使用
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是最为灵活的,但是理解上也有⼀定的难度。
本篇⽂章就到这⾥了,希望能给你带来帮助,也希望您能够多多关注的更多内容!
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论