Python 用字典映射代替C语言switch case语句

Python 用字典映射代替C语言switch case语句

python没有自己的swith case 语句,官方推荐的是使用if else 语句实现,但是用字典的映射方法也可以实现

一、C语言的使用:

colour =1
switch(colour){
  case 0 : colour_name='Red';
        break;
  case 1 : colour_name='Yellow';
        break;
  case 2 : colour_name='Blue';
        break;
  case 3 : colour_name='White';
        break;
  default: colour_name='Black';
        break;
}

解释:当colour=1的时候,匹配到case = 1,对应的值是:“Yellow”,如果colour=6,在colour没有对应的值,那么就执行default所对应的值"Black"。

二、Python字典映射:

colour = 1

COLOUR_MAP = {
    0: 'Red',
    1: 'Yellow',
    2: 'Blue',
    3: 'White'
}

# 不推荐使用该方法,当Key不存在会报错
# colour = COLOUR_MAP[colour]

# 推荐使用此方法
colour = COLOUR_MAP.get(colour, 'Black')
print colour

# 输出结果:Yellow

解释:当colour=1的时候,对应的值为"Yellow"。若key不存在,返回默认值"Black"

三、将字典映射的值更改为函数:

def get_add(x, y):
    """加法"""
    return x + y


def get_mul(x, y):
    """乘法"""
    return x * y


def get_sub(x, y):
    """减法"""
    return x - y


def get_div(x, y):
    """除法"""
    return x / y


# 字典的映射
COUNT_MAP = {
    0: get_add,
    1: get_mul,
    2: get_sub,
    3: get_div
}

count = 3

result = COUNT_MAP.get(count, None)

if result:
    result = result(10, 2)
    print '结果为:', result

else:
    print 'Key不存在'

# 输出结果:结果为: 5
# 输入的count = 3, 调用的是get_div()函数, 若要输入count = 6,那么输出结果就是"Key不存在"

用字典映射的好处就是可以让代码更简洁,看起来更优雅,维护起来更方便

猜你喜欢

转载自blog.csdn.net/Fe_cow/article/details/94461473