如果这个问题已经被提出并回答了,请接受我的道歉。我的需求在概念上非常简单,但不幸的是我无法在网上找到答案。
我需要在 Python(Python 2.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
"""
谢谢您提前考虑,
Mahdi
__qualname__
仍将保留原始名称。 - Fusion__qualname__
仍将保留原始名称。 - Fusion