嘿开发人员,我只是在探索装饰器,所以我遇到了一些错误,缺少 1 个必需的位置参数。但是当我在调用函数中驱动代码时,我首先提供特定的值,看看我的代码。
def main(func):
def wrapper(*args, **kwargs):
r, pi = func()
return pi * r
return wrapper
@main
def area(r, pi=3.14):
return r, pi
#drive
print(area(r=10))
您需要将包装器参数传递给
func()
:
r, pi = func(*args, **kwargs)
如果没有这个,当
area()
需要至少一个参数时,它会在不带参数的情况下调用 area()
。
您在第 3 行中缺少
r
参数值:r, pi = func()
:
在函数中传递 *args, **kwargs
。
def main(func):
def wrapper(*args, **kwargs):
r, pi = func(*args, **kwargs) ## here
return pi * r
return wrapper
@main
def area(r, pi=3.14):
return r, pi
#drive
print(area(10))
这将解决您的问题
输出:
31.400000000000002