如下:
有 fun_a(),fun_b(),fun_c()...fun_z() 26个函数,函数名称的后缀根据26个字母所得。能否写一个函数,输入参数为1个字符,'a' or 'b' or 'c'...or 'z' 根据输入参数调用对应的函数,如输入参数为'a' 则调用fun_a()
注:请不要使用条件分支的方式
使用字典,比如下面这样:
def funcA():在有switch的语言中,一般都是使用switch来根据入参进行判断。但是python中没有switch,因为根本不需要!!使用字典代替switch,性能更高,而且这种方法的表述能力更强一点。
另外func_dict.get(x, func_None)()中方法是从字典中取出值对应的函数对象,然后后面加上()是执行该对象的__call__方法。因为python中函数就是实现了__call__方法的对象。所以可以这么使用。
代码测试:
>>> test_function('a')
a
>>> test_function('b')
b
>>> test_function('z')
z
>>>
或者:
def test_function(input_key):嗯,确实很棒!可是此时如果我输入的是e,就会出错,因为函数fun_e()并未定义,不知道有没有办法预先判断是否存在函数fun_e() ???
追答只是举例,所以只写了fun_a, fun_b, fun_z,实际使用的时候,要全部写出来的。
如果函数不提供出来的话,怎么在后面调用呢?
直接在执行的时候做一些异常处理,就可以让它不报错:
代码测试:
>>> test_function('ab')
Error, function fun_ab is not defined
本回答被提问者采纳谢谢回答,但是我已经备注不希望使用条件分支的方式,因为如此太繁琐了。。。是否还有其他方式?