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

2024-09-28 03:15:09 发布

您现在位置: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中)


Tags: 函数字符串in列表for参数getargs
2条回答

如果函数位于本地命名空间中,只需删除引号:

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

如果第一个列表必须是字符串,则可以通过以下方式获得函数对象:

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

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

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

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

相关问题 更多 >

    热门问题