【发布时间】:2020-01-19 17:29:01
【问题描述】:
我认为如果我可以通过替换现有函数的一个参数来生成一个新函数,它会使我的代码更简单、更易于阅读。在下面的 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
【问题讨论】:
标签: python-3.x python-decorators