美文网首页
用字典的映射来代替switch语句

用字典的映射来代替switch语句

作者: 羋学僧 | 来源:发表于2021-07-23 14:32 被阅读0次

    用字典的映射来代替switch语句

    #coding:utf-8
    '''字典代替switch'''
    # 字典代替switchday=4
    some_day={
         0:'sunday',
         1:'monday',
         2:'tuesday'
    }
    one_day=some_day.get(day,'unknow')
    print(one_day)
    
    '''字典对应得可以为函数'''
    day=0
    def get_sun():
        return 'sunday'
    def get_mon():
        return 'monday'
    def get_tuse():
        return 'tuesday'
    def get_unk():
        return 'unknow'
    some_day={
        0:get_sun,
        1:get_mon,
        2:get_tuse
    }
    one_day=some_day.get(day,get_unk)()
    
    print(one_day)
    

    注意:当有指点外的key的值存在可以通过字典的get方法进行定义,返回的方法,但此方法的缺陷在于如果不同的key所对应得函数有不同个数的传值,就可能达不到效果。

    Python 中的 switch 语句

    Python 中的 switch 语句
    Python 不支持本机 switch 语句。我发现自己最近使用了以下编码习语,这似乎效果很好:

    {'option1': function1,
     'option2': function2,
     'option3': function3,
     'option4': function4}[value]()
    

    这也适用于 lambda,用于内联计算。这是一个在PHP中赋值给变量的 switch 语句:

    switch ($value) {
        case 'a':
            $result = $x * 5;
            break;
        case 'b':
            $result = $x + 7;
            break;
        case 'c':
            $result = $x - 2;
            break;
    }
    

    这是 Python 中的等效代码:

    result = {
      'a': lambda x: x * 5,
      'b': lambda x: x + 7,
      'c': lambda x: x - 2
    }[value](x)
    

    相关文章

      网友评论

          本文标题:用字典的映射来代替switch语句

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