Python 如何使用参数动态调用函数

Python 如何使用参数动态调用函数,python,Python,假设我将函数调用放入列表中 ['next_release()', 'last_release("com_disagg")'] 希望得到与下面相同的结果 我怎样才能在Python中获得它 迭代数组并使用参数动态调用函数。 next_release() last_release("com_disagg") 为每个函数调用head()方法 next_release().head() last_release("com_disagg").head() print next_release().he

假设我将函数调用放入列表中

['next_release()', 'last_release("com_disagg")']
希望得到与下面相同的结果

我怎样才能在Python中获得它

迭代数组并使用参数动态调用函数。

next_release()
last_release("com_disagg")
为每个函数调用head()方法

next_release().head()
last_release("com_disagg").head()
print next_release().head()
print last_release("com_disagg").head()
为每个功能添加打印

next_release().head()
last_release("com_disagg").head()
print next_release().head()
print last_release("com_disagg").head()
输出:

nr
com_disagg
nr
inside head
head printed
com_disagg
inside head
head printed
nr
inside head
head printed
com_disagg
inside head
head printed

当前您正在存储一个表示函数的字符串。这可能不是你想要的,因为它会迫使你使用
eval
,这通常是不好的

如果必须使用字符串进行映射,则可以不使用映射:

mapping = {
    'next_release()': next_release(),
    'last_release("com_disagg")': last_release("com_disagg")
}
现在,您可以使用映射(
mapping[“next_release()”]
…)获得结果

使用实际函数而不是字符串有两个更好的选项:

如果希望列表存储函数“结果”(调用后):

如果希望列表存储函数,则“引用”(请注意,我在中使用参数关闭了函数,以创建无参数函数:

functions_references = [next_release, lambda: last_release("com_disagg")]
list_of_functions_heads = [x().head() for x in list_of_functions_results]

您可以使用clsoure:

arr = ['next_release()', 'last_release("com_disagg")']  
def next_release():  
    def head():  
      return x;  

def last_release(var):  
    def head():  
     return y;  

for i in arr:
    print i.head()

你不是在叫头吗?