switch是一种语法结构,在大多数的编程语言当中,都提供了switch语法结构。
switch语句的作用与优点:
switch语句用于编写多分支结构的程序,类似于if... elif... else(if多分支)语句
switch语句表达的分支结构比if多分支语句表达的更清晰
代码的可读性更高,执行效率也比if多分支语句要高
python并没有提供switch语句,但是我们可以通过字典实现switch语句的功能。
实现方法分为两步:
1、定义一个字典
2、调用字典的get()获取相应的表达式
通过字典调用函数实现switch功能的方式如下:
1
|
{
1
:case1,
2
:case2}.get(x,
lambda
*
args,
*
*
keys: [args,keys])()
|
下面我们通过编写一个简单的四则运算程序来看看switch在python中到底是如何实现的,以及有何优点。
通过if多分支来写传统的四则运算程序:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
|
[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语句来写一下这个简单的四则运算程序:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
|
[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多分支语句的判断过程,从而大大提高程序执行效率。
本文转自 忘情OK 51CTO博客,原文链接:http://blog.51cto.com/itchentao/1890687,如需转载请自行联系原作者