为什么装饰器缺少 1 个必需的位置参数

问题描述 投票:0回答:2

嘿开发人员,我只是在探索装饰器,所以我遇到了一些错误,缺少 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))
python python-3.x arguments decorator positional-argument
2个回答
0
投票

您需要将包装器参数传递给

func()

r, pi = func(*args, **kwargs)

如果没有这个,当

area()
需要至少一个参数时,它会在不带参数的情况下调用
area()


0
投票

您在第 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

© www.soinside.com 2019 - 2024. All rights reserved.