python 如何根据输入参数调用不同的函数

2024-11-05 02:33:45
推荐回答(3个)
回答1:

使用字典,比如下面这样:

def funcA():
    pass

def funcB():
    pass

def func_None():
    print "cannot find func"

func_dict = {"a": funcA, "b": funcB}

def func(x):
    return func_dict.get(x, func_None)()

在有switch的语言中,一般都是使用switch来根据入参进行判断。但是python中没有switch,因为根本不需要!!使用字典代替switch,性能更高,而且这种方法的表述能力更强一点。

另外func_dict.get(x, func_None)()中方法是从字典中取出值对应的函数对象,然后后面加上()是执行该对象的__call__方法。因为python中函数就是实现了__call__方法的对象。所以可以这么使用。

回答2:

def fun_a():
    print 'a'
def fun_b():
    print 'b'
def fun_z():
    print 'z'
def test_function(input_key):
    function_map = {
                     'a':fun_a,
                     'b':fun_b,
                     'z':fun_z,
                    }
    return function_map[input_key]()


代码测试:

>>> test_function('a')

a

>>> test_function('b')

b

>>> test_function('z')

z

>>> 


或者:

def test_function(input_key):
    eval("fun_%s()"%input_key)

回答3:

#Python3.x
def func():
    c = input("Please Enter a Char:")
    while(True):
        if c == 'a':
            func_a()
            break;
        if c == 'b':
            func_b()
            break;

func()