0

在 Python 中进行一些元编程,我必须动态创建一个函数。我的问题是直到生成代码才确定参数的数量。所以不同的生成函数会有不同名称的不同参数。但是当函数生成时,所有信息都可用,我不想使用**args!这是一个例子:

# information collected by my codgen process
arg_names = ['param_a','param_b','param_c']
some_callable = ClassDeterminedWhileGeneratingCode

我想要生成的是一个像这样的函数,它将被添加到一个类中:

def my_fkt(self,param_a,param_b,param_c):
    instance = some_callable(param_a=param_a,param_b=param_b,param_c=param_c)
    self.do_something(instance)
    return instance.generate_result()

我非常习惯于使用高阶函数生成函数,但是如果参数的数量不固定,那将无济于事。我很确定,我在某处见过使用type.FunctionType. 但我找不到任何关于此的文档。

4

2 回答 2

1

看一下,

http://snipplr.com/view/17819/

如果要操作参数名称,应将“y.func_code.co_varnames”替换为具有给定名称的元组。

干杯,乌维

于 2012-10-15T09:26:17.170 回答
0

试试 convtools 库,它支持 input_args 和许多其他东西,这些都是关于生成临时代码的。

于 2021-06-05T20:19:28.807 回答