Python中的Switch语句实现

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
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章