滨海新区区长热线 电话:Python中switch-case实现
来源:百度文库 编辑:中财网 时间:2024/05/17 00:45:32
Python不像C/C++,Java等有switch-case的语法。不过其这个功能,比如用Dictionary以及lambda匿名函数特性来替代实现。
比如PHP中的如下代码:
1
2
3
4
5
6
7
8
9
10
11
switch ($value) {
case 'a':
$result = $x * 5;
break;
case 'b':
$result = $x + 7;
break;
case 'c':
$result = $x - 2;
break;
}
Python的等价实现为:
1
2
3
4
5
result = {
'a': lambda x: x * 5,
'b': lambda x: x + 7,
'c': lambda x: x - 2
}[value](x)
如果是稍微复杂一点的函数,也可以做到,比如我们计算加减乘除,函数定义如下:
1
2
3
4
5
6
7
8
def add(a,b):
return a + b
def multi(a,b):
return a* b
def sub(a,b):
return a - b
def div(a,b):
return a/ b#b is non-zero
如果是switch实现的话,case(‘操作数’)来判断之行的对应函数。看看Python的实现:
1
2
3
4
5
6
7
8
9
10
11
def calc(type,x,y):
calculation = {'+':lambda:add(x,y),
'*':lambda:multi(x,y),
'-':lambda:sub(x,y),
'/':lambda:div(x,y)}
return calculation[type]()
#calc = {1:lambda:add(x,y)}[value]()
result1 = calc('+',3,6)
result2 = calc('-',3,6)
print result1, result2
这里用的结构如下:
1
2
3
4
message = { 'type1': lambda: func1(some_data),
'type2': lambda: func2(other_data),
}
return message[type]()
还有更加复杂的就是自定义一个Switch类了,可以参考http://code.activestate.com/recipes/410692-readable-switch-construction-without-lambdas-or-di/
比如PHP中的如下代码:
1
2
3
4
5
6
7
8
9
10
11
switch ($value) {
case 'a':
$result = $x * 5;
break;
case 'b':
$result = $x + 7;
break;
case 'c':
$result = $x - 2;
break;
}
Python的等价实现为:
1
2
3
4
5
result = {
'a': lambda x: x * 5,
'b': lambda x: x + 7,
'c': lambda x: x - 2
}[value](x)
如果是稍微复杂一点的函数,也可以做到,比如我们计算加减乘除,函数定义如下:
1
2
3
4
5
6
7
8
def add(a,b):
return a + b
def multi(a,b):
return a* b
def sub(a,b):
return a - b
def div(a,b):
return a/ b#b is non-zero
如果是switch实现的话,case(‘操作数’)来判断之行的对应函数。看看Python的实现:
1
2
3
4
5
6
7
8
9
10
11
def calc(type,x,y):
calculation = {'+':lambda:add(x,y),
'*':lambda:multi(x,y),
'-':lambda:sub(x,y),
'/':lambda:div(x,y)}
return calculation[type]()
#calc = {1:lambda:add(x,y)}[value]()
result1 = calc('+',3,6)
result2 = calc('-',3,6)
print result1, result2
这里用的结构如下:
1
2
3
4
message = { 'type1': lambda: func1(some_data),
'type2': lambda: func2(other_data),
}
return message[type]()
还有更加复杂的就是自定义一个Switch类了,可以参考http://code.activestate.com/recipes/410692-readable-switch-construction-without-lambdas-or-di/
c#中switch case 中如何判断条件是否在一个范围?
c++中 switch语句的各个case分支可以有多条语句,举例说明什么是多条语句
java 中菜单项有没有ID,想用Switch(ID){case...}
switch...case语句这样写对吗?
switch 语句中 当若干分支需要执行相同操作时,可以使多个case分支共用一组语句。
switch能实现这些吗
switch case 能和if同时用吗
谁能实现这个case
如何用python实现网页登入?
warning C4060: switch statement contains no 'case' or 'default' labels是什么意思
Python 语法问题:怎么实现以下 C 代码?
C++中关于SWITCH语句的用法
在C语言中的switch语句里。如果default放在了case的前面。那么程序是否还会执行后面的case
main(){int k=4;char c='x';switch (c){case 'a':k=3;case 'b':k=2;case 'c':k=1;}printf("%d",k);}结果
vb中 select case 的用法
在asp,vb 中 select case 语句中 case 50到100这间 这名话怎么表示
python中如何获得7天前的日期
nba中如何使用Off-Ball Switch键
汽车音响说明书翻译中:do far and close switch;
switch语句中"常量表达式" 什么是表达式
判断题: break语句只能在switch语句中
一个C++程序中可以用几个switch语句
tc中case转换错误是什么意思?怎么解决?
在Select Case语句中,哪些是正确的。