你好,我有这段代码,但是它不起作用:
def by2(c):
return c*2
@by2
def add(a,b):
return a+b
print(add(2,5))
我在尝试执行它时得到了
TypeError: unsupported operand type(s) for *: 'function' and 'int'
能帮我吗?
答案 0 :(得分:0)
装饰器的工作方式不同。装饰器将您的功能替换为另一种。因此,装饰器应返回一个新函数。这个:
@by2
def add(a, b):
return a + b
与此相同:
def add(a, b):
return a + b
add = by2(add)
所以您需要的是:
def by2(func):
def wrapper(*args):
return func(*args) * 2
return wrapper
@by2
def add(a, b):
return a + b
print(add(2, 5))