Python的switch…case语法
时间:2009-06-01 来源:hkebao
Monday, November 17, 2008 16:22 | Author: Mac | Tags: Example, Python
Python没有switch…case的语法,不过可以用Dictionary和lambda匿名函数的特性来写出同样优雅的代码,比如这段javascript代码:
switch(value){
case 1:
func1();
break;
case 2:
func2();
break;
case 3:
func3();
break;
}
等价的Python代码:
{
1: lambda: func1,
2: lambda: func2,
3: lambda: func3
}[value]()
带赋值的情况:
result = {
'a': lambda x: x * 5,
'b': lambda x: x + 7,
'c': lambda x: x - 2
}[value](x)
用try…catch来实现带Default的情况,不过这个形式就感觉差些了:
try:
{'option1': func1,
'option2': func2,
'option3': func3}[value]()
except KeyError:
# default action
附上google到的相关内容(评论中的讨论也值得一看):
- http://www.mustap.com/pythonzone_post_224_python-switch-statement
- http://simonwillison.net/2004/May/7/switch/
相关阅读 更多 +