lambda实现switch

2017-09-13  本文已影响0人  是阿离

问题

根据输入的条件符号,对两个输入的数字进行表达式判断

方案

查了查网上资料,总体有三种方案实现:
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>

参考文章

Python中Swithch Case语法实现
Python学习笔记(十二):lambda表达式与函数式编程

上一篇 下一篇

猜你喜欢

热点阅读