【发布时间】:2012-10-22 11:10:41
【问题描述】:
如果这个问题已经被提出并回答,我们深表歉意。 我需要做的概念很简单,可惜我一直没能在网上找到答案。
我需要在运行时使用自定义名称在 Python (Python2.7) 中创建动态函数。每个函数的主体也需要在运行时构建,但所有函数(几乎)都是相同的。
我从名单开始。
func_names = ["func1", "func2", "func3"]
请注意,func_name 列表可以包含任意名称的列表,因此名称不会只是 func1、func2、func3、...。
我希望结果是:
def func1(*args):
...
def func2(*args):
...
def func3(*args):
...
我需要这样做的原因是每个函数名对应一个测试用例,然后从外部调用。
更新:没有用户输入。我正在捆绑一个更大模块的两端。一端确定测试用例是什么,除此之外,填充测试用例名称的列表。另一端是函数本身,它必须与测试用例名称进行 1:1 映射。所以我有了测试用例的名称,我知道我想对每个测试用例做什么,我只需要创建具有测试用例名称的函数。由于测试用例的名称是在运行时确定的,因此基于这些测试用例的函数创建也必须在运行时。
更新:我还可以将这个自定义命名函数包装在一个类中,如果这样会让事情变得更容易的话。
我可以将函数的内容(因为它们几乎相同)硬编码在一个字符串中,或者我可以基于之前定义的基类。只需要知道如何使用此内容填充函数即可。
例如:
func_content = """
for arg in args:
print arg
"""
提前致谢,
马赫迪
【问题讨论】:
标签: python python-2.7 closures metaprogramming dynamic-function