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