python通过函数名调用函数
原理
eval
函数用来执行一个字符串表达式,并返回表达式的值。
*args
可以展开数组类型的参数。
**kwargs
可以展开字典类型的参数。
示例代码
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36
| mapa={} mapa["add"]=[1,4] mapa["sub"]=[5,2] mapa["add3"]=[2,3,5]
mapb={} mapb["add"]={"a":1,"b":4} mapb["sub"]={"a":5,"b":2} mapb["add3"]={"a":2,"b":3,"c":5}
def test_map_namecall(): print("test") for name in mapa: res = eval(name)(*mapa[name]) print("{} {} {}".format(name,mapa[name],res))
print("test2") for name in mapa: res = eval(name)(**mapb[name]) print("{} {} {}".format(name,mapb[name],res)) return None
def add(a,b): return a+b
def sub(a,b): return a+b
def add3(a,b,c): return a+b+c
if __name__ == "__main__": test_map_namecall()
|
输出