我需要创建一个参数化另一个函数的函数,其中一些参数是显式设置的,而其他函数只在调用该函数期间设置。 (我试图在传达我的问题的一般说明的同时尽可能简洁地提出问题)这是我想要实现的目标的简要实现。
class registration():
#...
def register(self, func, **kwargs):
# ... append spec to internal dict
class spec():
def __init__(self, func, **kwargs):
self.func = func
self.args = **kwargs
def __call__(self, *args):
# should call func with the
reg = registration()
def register(func, **kwargs)
reg.register(func, **kwargs)
def func (**kwargs):
for i in range(kwargs['param2'])
print(kwargs[])
print(kwargs['param3']['something'])
def func2 (**kwargs):
if kwargs['param3']:
print(kwargs['param1'])
else:
print(kwargs['param2'])
register(func, param1 = "answer:", param2 = lambda x: x ** 0, param3 = {"something": lambda x: x * 8})
# spec[0](111,8) -> answer: 1 64
register(func2, param1= "hello", param2 = "goodbye", param3= x: if x >=0: return True; else: return False; )
# spec[1](1) -> hello
我的问题是如何有效地实现关于在spec类的调用中映射/输入args以及如上所示的参数的功能,而不管它们在寄存器函数中的位置如何。当如上所示实现多个注册时,这尤其重要。
我怎样才能最有效地实现传递参数的过程,如functools.partial,但是有多种不同的安排?