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

用字典的映射来代替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语句)