美文网首页
lambda实现switch

lambda实现switch

作者: 莫显辉 | 来源:发表于2017-09-13 21:26 被阅读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表达式与函数式编程

    相关文章

      网友评论

          本文标题:lambda实现switch

          本文链接:https://www.haomeiwen.com/subject/bjwlsxtx.html