如果已经提出并回答了这个问题,请道歉.我需要做的是概念非常简单,但不幸的是我无法在网上找到答案.
我需要在运行时使用自定义名称在Python(Python2.7)中创建动态函数.每个函数的主体也需要在运行时构造,但对于所有函数(几乎)都是相同的.
我从一个名单开始.
func_names = ["func1", "func2", "func3"]
Run Code Online (Sandbox Code Playgroud)
请注意,func_name列表可以包含任意名称列表,因此名称不仅仅是func1,func2,func3,....
我希望结果如下:
def func1(*args):
...
def func2(*args):
...
def func3(*args):
...
Run Code Online (Sandbox Code Playgroud)
我需要这样做的原因是每个函数名称对应一个测试用例,然后从外部世界调用.
更新:没有用户输入.我正在绑一个更大的模块的两端.一端确定测试用例是什么,以及填充测试用例名称的列表.另一端是函数本身,它必须与测试用例的名称进行1:1映射.所以我有测试用例的名称,我知道我想对每个测试用例做什么,我只需要创建具有测试用例名称的函数.由于测试用例的名称是在运行时确定的,因此基于这些测试用例的函数创建也必须在运行时.
更新:我也可以将这个自定义命名函数包装在一个类中,如果这样可以使事情变得更容易.
我可以在字符串中硬编码函数的内容(因为它们几乎相同),或者我可以将它基于先前定义的基类.只需要知道如何用这个内容填充函数.
例如:
func_content = """
for arg in args:
print arg
"""
Run Code Online (Sandbox Code Playgroud)
提前致谢,
马赫迪
假设我需要创建10个名为add1,add2,...,add10的函数.对于每个i,addi接受整数x并输出x + i.
当我尝试以下内容并评估add2(10)时,Python给了我一个NameError.
for i in range(10):
def addi(x):
return x + (i+1)
Run Code Online (Sandbox Code Playgroud)
我知道上面的代码是错误的,因为我定义的addi函数不可变; 我很确定我所做的一切都是重新定义了10次.如何快速定义这10个功能?