注:请不要使用条件分支的方式

如下:
有 fun_a(),fun_b(),fun_c()...fun_z() 26个函数,函数名称的后缀根据26个字母所得。能否写一个函数,输入参数为1个字符,'a' or 'b' or 'c'...or 'z' 根据输入参数调用对应的函数,如输入参数为'a' 则调用fun_a()

阿波罗的战车
浏览 137回答 2
2回答

狐的传说

使用字典,比如下面这样:12345678910111213def 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__方法的对象。所以可以这么使用。

守着星空守着你

12345678910111213def 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>>> 或者:12def test_function(input_key):    eval("fun_%s()"%input_key)
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python
WebApp