Python实现case/switch

Python没有直接支持case/switch结构,通常是通过 if / elif / else 来实现类似结构。

以下是一个采用字典来实现case/switch结构,值得借鉴:

# define the function blocks
def zero():
    print "You typed zero.\n"

def sqr():
    print "n is a perfect square\n"

def even():
    print "n is an even number\n"

def prime():
    print "n is a prime number\n"

# map the inputs to the function blocks
options = {0 : zero,
           1 : sqr,
           4 : sqr,
           9 : sqr,
           2 : even,
           3 : prime,
           5 : prime,
           7 : prime,
}

然后采用如下调用来实现:

options[num]()

另外一种巧妙的字典方法:

def f(x):
    return {
        'a': 1,
        'b': 2,
    }[x]

使用字典get(key[, default])方法

def f(x):
    return {
        'a': 1,
        'b': 2
    }.get(x, 9)    # 9 is default if x not found

参考

Last updated