将函数列表应用于python中的参数列表

时间:2019-04-18 10:27:25

标签: python

我有以下列表

fncs = ["MyLinkedList","addAtHead","get","addAtTail"]
args = [[],[8],[1],[81]]

我想回来

[MyLinkedList(), addAtHead(8), get(1), addAtTail(81)]

我以为我可以使用fnc_vals = [f(x) for f, x in zip(fncs, args)],但这似乎不起作用,因为我的fncs列表是字符串列表。如何将函数列表应用于参数列表(在Python中)?

2 个答案:

答案 0 :(得分:1)

如果函数在本地名称空间中,请删除引号:

fncs = [MyLinkedList, addAtHead, get, addAtTail]
args = [[], [8], [1], [81]]

如果第一个列表必须是字符串,则可以使用以下命令获取函数对象:

function_names = ["MyLinkedList", "addAtHead", "get", "addAtTail"]
functions = [locals()[fn] for fn in function_names]

如果,即函数在本地名称空间中命名。

答案 1 :(得分:1)

如果您有引用当前作用域函数的字符串列表,则可以使用globalslocals

fnc_vals = [golbals()[f](x) for f, x in zip(fncs, args)]

检查此示例:

>>> def foo(x):
...     return x
... 
>>> globals()["foo"](10)
10

您还可以构建自己的函数寻址字典:

>>> def foo(x):
...     return x
... 
>>> def bar(x):
...     return x + 10
... 
>>> func_dict = {f.__name__:f for f in (foo, bar)}
>>> func_dict["foo"](10)
10