python之switch的实现

2017-01-11 15:23:58来源:http://itchentao.blog.51cto.com/5168625/1890687作者:忘情OK人点击


防伪码:忘情公子著

switch是一种语法结构,在大多数的编程语言当中,都提供了switch语法结构。

switch语句的作用与优点:

switch语句用于编写多分支结构的程序,类似于if... elif... else(if多分支)语句

switch语句表达的分支结构比if多分支语句表达的更清晰

代码的可读性更高,执行效率也比if多分支语句要高

python并没有提供switch语句,但是我们可以通过字典实现switch语句的功能。

实现方法分为两步:

1、定义一个字典

2、调用字典的get()获取相应的表达式

通过字典调用函数实现switch功能的方式如下:

{1:case1,2:case2}.get(x,lambda*args,**keys:[args,keys])()

下面我们通过编写一个简单的四则运算程序来看看switch在python中到底是如何实现的,以及有何优点。

通过if多分支来写传统的四则运算程序:

[root@localhosttest]#catcal.py
#!/usr/bin/python
#coding:utf-8

from__future__importdivision#当除法结果有小数时保留小数

defplus(x,y):
returnx+y

defminus(x,y):
returnx-y

deftimes(x,y):
returnx*y

defdivide(x,y):
returnx/y

defoperator(x,o,y):
ifo=="+":
printplus(x,y)
elifo=="-":
printminus(x,y)
elifo=="*":
printtimes(x,y)
elifo=='/':
printdivide(x,y)
else:
pass

operator(2,'+',4)
[root@localhosttest]#pythoncal.py
6

如上例所示,当我们要执行除法时,首先会先判断“+”、“-”、“*”三条语句,这样就会显得有点多余,降低了程序执行的效率。

接下来我们通过switch语句来写一下这个简单的四则运算程序:

[root@localhosttest]#catscal.py
#!/usr/bin/python
#coding:utf-8

from__future__importdivision

plus=lambdax,y:x+y
minus=lambdax,y:x-y
times=lambdax,y:x*y
divide=lambdax,y:x/y

operator={'+':plus,'-':minus,'*':times,'/':divide}

deff(x,o,y):
returnoperator.get(o,lambda*args,**keys:[o,arg,key])(x,y)

printf(1,'+',2)
printf(4,'-',2)
printf(4,'*',2)
printf(3,'/',2)
printf(1,'%',2)
[root@localhosttest]#pythonscal.py
3
2
8
1.5
['%',(1,2),{}]#这里是由上面的lambda语句收集操作数、运算符和字典而得来的
#当运算符不是+-*/中任意一个时,则用o收集运算符存至列表中,不执行运算操作
#用*args收集操作数
#用**keys收集字典,这个示例中没有字典,所以收集到的结果是一个空字典

如上例如示,我们将直接在字典中取到key(也就是运算符),然后进行运算,如此的话就少了传统if多分支语句的判断过程,从而大大提高程序执行效率。


最新文章

123

最新摄影

微信扫一扫

第七城市微信公众平台