Chinaunix首页 | 论坛 | 博客
  • 博客访问: 29335852
  • 博文数量: 2065
  • 博客积分: 10377
  • 博客等级: 上将
  • 技术积分: 21525
  • 用 户 组: 普通用户
  • 注册时间: 2008-11-04 17:50
文章分类

全部博文(2065)

文章存档

2012年(2)

2011年(19)

2010年(1160)

2009年(969)

2008年(153)

分类: Python/Ruby

2009-06-01 10:55:53

Monday, November 17, 2008 16:22 | Author: Mac | Tags: ,

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到的相关内容(评论中的讨论也值得一看):

阅读(2750) | 评论(2) | 转发(0) |
给主人留下些什么吧!~~

chinaunix网友2009-07-31 16:58:40

学学了!美女谢谢了!

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: -------------------------------------------------------------------------------