我有以下列表
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中)?
答案 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)
如果您有引用当前作用域函数的字符串列表,则可以使用globals
或locals
:
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