Python中switch-case实现(转)
2017-11-03 18:53
351 查看
转自:http://www.codecho.com/switch-case-in-python/Python不像C/C++,Java等有switch-case的语法。不过其这个功能,比如用Dictionary以及lambda匿名函数特性来替代实现。比如PHP中的如下代码:http://code.activestate.com/recipes/410692-readable-switch-construction-without-lambdas-or-di/觉得用python写个服务器什么的,其实还是很简单的。
switch
(
$value
) {
case
'a'
:
$result
=
$x
* 5;
break
;
case
'b'
:
$result
=
$x
+ 7;
break
;
case
'c'
:
$result
=
$x
- 2;
break
;
}Python的等价实现为:
result
=
{
'a'
:
lambda
x:x
*
5
,
'b'
:
lambda
x:x
+
7
,
'c'
:
lambda
x:x
-
2
}[value](x)如果是稍微复杂一点的函数,也可以做到,比如我们计算加减乘除,函数定义如下:
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的实现:
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
)
result1, result2这里用的结构如下:
message
=
{
'type
1
'
:
lambda
:
func
1
(
some_data
)
,
'type
2
'
:
lambda
:
func
2
(
other_data
)
,
}
return
message
[type]
(
)还有更加复杂的就是自定义一个Switch类了,可以参考
相关文章推荐
- Python switch/case语句实现方法
- python 实现switch/case语句
- 【Python Trick】Python的switch-case实现
- python2.7通过字典实现java的switch-case模式匹配(代码有注释)
- Python里如何实现C中switch...case的功能
- python中Switch/Case实现的示例代码
- python 实现case when ,switch的功能
- C语言中switch case语句可变参实现方法(case 参数 空格...空格 参数 :)
- python实现简单的switch功能
- C++使用模板类实现任意类型switch和变量case
- 使用Python函数和字典实现Java中的switch功能
- Python中实现switch功能
- 求1+2+3+...+n,要求不能使用乘除法、for、while、if、else、switch、case等关键字及条件判断语句(A?B:C)。Java实现
- CLisp 10:用LISP的基本规则实现switch...case
- python语言没有switch-case语句
- Python利用字典实现switch功能
- jsp自定义标签实现java的switch……case实例
- 实现1+2+3+...+n。要求不能使用乘除法,for,while,if,else,switch,case,等关键字及条件判断语句。
- C语言中switch case语句的实现
- python中实现switch,类似表驱动的方式