您的位置:首页 > 编程语言 > Python开发

python switch…case语法

2013-12-23 15:28 369 查看
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/
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: