Python通过代码中的字符串名称调用函数

时间:2015-12-14 03:54:18

标签: python

以下是我希望能够做到的事情:

我有一个名为functions的文件,有很多功能。从功能上讲,这些函数基本上是相同的(即,它们都是以下形式:pandas.Dataframe - > pandas.Dataframe)。显然,它们对Dataframe做了不同的事情,所以从这个意义上说它们是不同的。

我希望能够将我的main函数传递给字符串列表,这将是模块中的实际函数名称,并让我的程序将字符串转换为函数调用。

所以,基本上,而不是:

functions = [module.functionA, module.functionB, module.functionC]
x = g(functions) 
print(x)
> 'magical happiness'

我会:

function_strings = ['functionA','functionB','functionC']
functions = interpret_strings_as_function_calls(module,function_strings)
x = g(functions)
print(x)
> 'magical happiness'

有办法做到这一点吗?或者我是否需要在模块中编写一个函数来匹配每个字符串及其相应的函数?即:

def interpret_strings(function_string):
     if function_string == 'functionA':
            return module.functionA
     elif function_string == 'functionB':
            return module.functionB
     etc.

(或在switch语句中,或其他)

1 个答案:

答案 0 :(得分:2)

您可以使用getattr(module, function_string)