因为Python有一流的函数,
所以它们可以用来模拟 switch/case 语句。
纳尼 ?用函数还可以代替 switch/case 语句, 什么鬼操纵, 其实是可以的,大家仔细想一想 switch/case 相当于一个判断语句,我们可以通过 return 和 ambda 来实现,而且效率更高。
先看普通版:
def dispatch_if(operator, x, y): if operator == 'add': return x + y elif operator == 'sub': return x - y elif operator == 'mul': return x * y elif operator == 'div': return x / y else: return None
这应该是经常使用的模式。
接下来看加强版:
def dispatch_dict(operator, x, y): return { 'add': lambda: x + y, 'sub': lambda: x - y, 'mul': lambda: x * y, 'div': lambda: x / y, }.get(operator, lambda: None)() >>> dispatch_if('mul', 2, 8) 16 >>> dispatch_dict('mul', 2, 8) 16 >>> dispatch_if('unknown', 2, 8) None >>> dispatch_dict('unknown', 2, 8) None
一个字来概括 “高大上”!但是会有些人问 “这样写很麻烦啊,直接用判断语句岂不是简单方便吗”,在这里忽略了个问题,虽然直接使用判断语句很方便简单,但是执行效率低下,如果把它封装一个函数,这样执行起来效率高,进一步讲,哇 这哥们代码写的有水平。
一些更高级的小技巧,待续。。。