繁体   English   中英

我在哪里用这个装饰器代码犯了错误?

[英]Where I am making a mistake with this decorator code?

当我们有不同的参数时,我试图理解 python 中装饰器的概念(实际上我不确定如何将参数传递给装饰器)。 我写了下面的小而简单的代码,但我无法运行它:

def advance(*arg, function):
    result = a * function(b, c)
    print(result)

@advance
def Sum1(b, c):
    return b + c

print(Sum1(1, 2, 3))

运行代码时,我得到TypeError: advance() missing 1 required keyword-only argument: 'function'.

装饰器必须返回一个新函数,所以你想要这样的东西:

def advance(function):
    def wrapped(a, b, c):
        return a * function(b, c)
    return wrapped

@advance
def Sum1(b, c):
    return b + c

print(Sum1(10, 2, 3))

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM