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()
你不是在叫头吗?