发布时间:2019-09-01 09:49:56编辑:auto阅读(1782)
防伪码:忘情公子著
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@localhost test]# cat cal.py #!/usr/bin/python #coding:utf-8 from __future__ import division #当除法结果有小数时保留小数 def plus(x,y): return x + y def minus(x,y): return x - y def times(x,y): return x * y def divide(x,y): return x / y def operator(x,o,y): if o == "+": print plus(x,y) elif o == "-": print minus(x,y) elif o == "*": print times(x,y) elif o == '/': print divide(x,y) else: pass operator(2,'+',4) [root@localhost test]# python cal.py 6
如上例所示,当我们要执行除法时,首先会先判断“+”、“-”、“*”三条语句,这样就会显得有点多余,降低了程序执行的效率。
接下来我们通过switch语句来写一下这个简单的四则运算程序:
[root@localhost test]# cat scal.py #!/usr/bin/python #coding:utf-8 from __future__ import division plus = lambda x,y: x+y minus = lambda x,y: x-y times = lambda x,y: x*y divide = lambda x,y: x/y operator = {'+':plus,'-':minus,'*':times,'/':divide} def f(x,o,y): return operator.get(o,lambda *args,**keys: [o,arg,key])(x,y) print f(1,'+',2) print f(4,'-',2) print f(4,'*',2) print f(3,'/',2) print f(1,'%',2) [root@localhost test]# python scal.py 3 2 8 1.5 ['%', (1, 2), {}] #这里是由上面的lambda语句收集操作数、运算符和字典而得来的 #当运算符不是+-*/中任意一个时,则用o收集运算符存至列表中,不执行运算操作 #用*args收集操作数 #用**keys收集字典,这个示例中没有字典,所以收集到的结果是一个空字典
如上例如示,我们将直接在字典中取到key(也就是运算符),然后进行运算,如此的话就少了传统if多分支语句的判断过程,从而大大提高程序执行效率。
上一篇: Python的故事_one
下一篇: python excel操作
47872
46435
37324
34767
29338
26002
24953
19971
19571
18059
5813°
6438°
5954°
5980°
7086°
5931°
5972°
6463°
6428°
7805°