背景
众所周知,
Python中没有switch/case语句
,而工作中经常会有不同的逻辑需要处理,比较常见的方式是使用if语句实现多种逻辑处理,但随着逻辑的增多,多个elif会让代码看起来很不友好。比较trick的方法,是使用dict实现多种逻辑处理来模拟switch/case语句。
使用if实现
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
使用dict实现
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