全部博文(2065)
分类: Python/Ruby
2009-06-01 10:55:53
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到的相关内容(评论中的讨论也值得一看):
chinaunix网友2009-07-02 11:19:47
你对python了解吗? 我想请教下关于python的东西。 我想用python编写1个菜单,但是多重的菜单应该怎么写?有没高手请教下。 下面是我菜单的框架: 主菜单---------------------------------------------------------------------------------- Welcome to install V2 program ================================================= Make a Choice from the Menu below 0 Return to Linux 1 View parameter file 2 Install Basic service 3 Install Application service Enter Choice: -------------------------------------------------------------------------------