Python实现switch语句,没错!是Switch语句
Python中是没有switch语句的;条件判断只能使用if…else…这样的语句。
但是伟大的劳动人民是非常有头脑的,我们总有办法。
先看一段代码:
{
'0' : lambda : print('你是人妖'),
'1' : lambda : print('你是男的'),
'2' : lambda : print('你是女的'),
}['0']()
实现原理很简单,在字典中使用索引的方法来确定要执行的代码。
再来一个示例:
switch = {
"+":lambda a,b:a+b,
"-":lambda a,b:a-b,
"*":lambda a,b:a*b,
"/":lambda a,b:a/b
}
print(switch["*"](6,2))
这段代码来选择运算符,从而对两个值进行计算,这是不是比if else语句要好用多了呢?你可以试试用if语句来实现上述功能。
但是这个switch语句是有缺陷的,他没有实现else语句。
我们可以使用try语句来实现switch else的功能:
try:
print(switch['**'](6,2))
except KeyError as e:
pass
来看看更高级的实现:
class _switch:
def __init__(self):
self._once = False
def __call__(self,exp,code):
if eval(exp):
self._once = True
exec(code)
def xelse(self,code):
if not self._once:
exec(code)
switch=_switch()
a=10
switch( 'a==5',"""
global a
print('a等于5,将他乘以10')
a = a*10
""")
switch('a==10',"""
global a
print('a等于5,将他乘以20')
a=a*20
""")
switch.xelse("""
print('没有匹配条件则执行')
""")
print(a)
上文中的switch类是作者临时起意,功能肯定还不完善。但已经能完成一些简单的条件选择。有兴趣的朋友可以完善它。