我认为,如果可以通过替换现有函数的一个参数来生成新函数,这将使我的代码更易于阅读。在下面的MWE中,我使用了求和函数并尝试实现与装饰器类似的方式,其中a = 5被硬编码为函数。不幸的是,我无法正确解释回溯。
def sum(a,b):
return a+b
foo = sum
print(foo(2,3))
def new_sum(func, *args,**kwargs):
def wrapper(func, *args,**kwargs):
x = func(5, *args, **kwargs)
return x
return wrapper
bar = new_sum(func=sum)
print(bar(1))
返回:
$ python3 func_arg.py
5
Traceback (most recent call last):
File "func_arg.py", line 14, in <module>
print(bar(1))
File "func_arg.py", line 9, in wrapper
x = func(5, *args, **kwargs)
TypeError: 'int' object is not callable
您可以为此使用functools.partial
。