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

def funcA(): passdef funcB(): passdef 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,因为根本...
python 如何根据输入参数调用不同的函数
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)2015-05-21
使用字典,比如下面这样:
def funcA(): passdef funcB(): passdef 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__方法的对象。所以可以这么使用。
2015-09-25
#Python3.xdef func(): c = input("Please Enter a Char:") while(True): if c == 'a': func_a() break; if c == 'b': func_b() break;func()2015-05-21
mengvlog 阅读 7 次 更新于 2025-07-19 19:39:03 我来答关注问题0
檬味博客在线解答立即免费咨询

Python相关话题

Copyright © 2023 WWW.MENGVLOG.COM - 檬味博客
返回顶部