Python不像C/C++,Java等有switch-case的语法。不过其这个功能,比如用Dictionary以及lambda匿名函数特性来替代实现。
实现方法分为两步:
首先,定义一个字典;
其次,调用字典的get()获取相应的表达式。
下面是个计算器的例子,函数定义如下:
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) print result1, result2
还有可以自定义一个Switch类了,可以参考http://code.activestate.com/recipes/410692-readable-switch-construction-without-lambdas-or-di/