menu

天魔窟

勇往直前

Avatar

switch/case equivalence in Python

Python 默认的选择分支语句只有 if ... elif ... else,对于比较多的分支,这么写看起来有点傻,不符合 Python 的 geeky 特性。搜索了一下,觉得下面这个用 Dictionary 的办法不错:

cases = {
    'a': f1,
    'b': f2,
    'c': f3,
    'd': f4
}

r = cases.get(v, defaultF)(param)


分别定义过程 f1 到 f4 以及 defaultF,这样根据 v 的取值(比如 'a' 到 'd')会执行 f1 到 f4,如果 v 是其他值则执行 defaultF。注意 Dictionary 中的函数名后面不要带括号,否则就成了调用而不是引用了。

这个不错。虽然似乎没有switch/case效率高,但是看上去很优雅~

师兄开始用python了

不错,学习了。
不过有时候可能还是得用if elif
if a>b then
elif a>c then
elif a<d
elif a==e

哈哈,昨天刚看到你的文章下午就用到了。