问题
根据输入的条件符号,对两个输入的数字进行表达式判断
方案
查了查网上资料,总体有三种方案实现:
1、字典+函数
def funcA(x):
return x
...
funcDict{
'A' : funcA,
'B' : funcB,
'C' : funcC
}
# 调用
funcDict.get(value, funcDefault)(x)
2、字典+lambda
lambdaDict{
'A' : lambda x : x,
'B' : lambda x : x,
'C' : lambda x : x
}[value](x)
3、Brian Beck提供了一个类 switch 来实现其他语言中switch的功能
由于要实现的功能是两个数之间根据输入的表达式来进行比较,所以选择了写起来比较简洁(自认为简洁)的lambda
样例
def opJudge(processCnt, op, expectCnt):
judgeAns = {
'=' : lambda x, y : x == y,
'>' : lambda x, y : x > y,
'<' : lambda x, y : x < y,
'>=' : lambda x, y : x >= y,
'<=' : lambda x, y : x <= y,
'!=' : lambda x, y : x != y,
}[op](processCnt, expectCnt)
return judgeAns
<small>写的时候对lambda的认识:lambda后面紧跟的是形参,就是func(x, y)里面的x、y,冒号后面的是方法,就是func(...){method}里面的method</small>
网友评论