Python中的Switch语句实现
switch语句
switch语句用于编写多分支结构的程序,类似与if…elif…else语句
switch语句表达的分之结构比if…elif…else语句表达的更清晰,代码的可读性更高
Python中没有switch语句关键字,但可以通过字典dict实现switch语句的功能,实现方法分为两步:首先,定义一个字典;其次,调用字典的get()获取相应的表达式
switch有什么好处?
函数调用,通过字典调用函数{1:case1,2:case2}.get(x,lambda *arg,**key:)()
case-通过if语句进行±*/运算
def jia(x,y):
return x+y
def jian(x,y):
return x-y
def cheng(x,y):
return x*y
def chu(x,y):
return x/y
def operator(x,o,y):
if o=='+':
jia(x,y)
elif o=='-':
jian(x,y)
elif o=='*':
cheng(x,y)
elif o=='/':
chu(x,y)
else:
pass
print(operator(2,'+',4))
这样写函数,当执行除法操作时,前3次判断都是多余的,效率较低,if...elif...else
语句天生会有优先级的区分
用dict类型改写switch语句如下;
operator={'+':jia,'-':jian,'*':cheng,'/':chu}
print(operator['+'])
<function jia at 0x00000000030F6400>
>>> operator['+'](2,3)
5
>>> print(operator['+'](2,3))
5
>>>
根据dict字典类型数据的特性,如果没有对应[key],会报错,那我们可以改用dict.get()方法替换替换对key-value的获取,即switch判断。
>>> print(operator.get('*')(5,3))
15
>>>
>>> def f(x,o,y):
print(operator.get(o)(x,y))
>>> f(3,'*',9)
27