试图理解python装饰器

2024-04-25 13:55:42 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在努力学习Python decorators,但仍然感到困惑。我正在尝试解决以下错误: 创建一个组合两个数字的函数,然后创建一个将结果加倍的装饰器

我的代码:

x=6
y=5
u=None
def multi(func):
    def adding(*args):
        print("Welcome func {}".format(func.__name__))
        func(*args)
    return adding

@multi
def tyu(x,y):
    print("=> ", x+y)
    u = x+y
    return u

u = tyu(x,y)

@multi
def dss(u):
    dd=u*2
    return dd
yy=dss(u)
print("** ", yy)

Tags: 函数decoratorsreturndef错误args数字multi
1条回答
网友
1楼 · 发布于 2024-04-25 13:55:42

你差点就拿到了。您只需要在decorator中返回func,然后将结果乘以2。你知道吗

def multi(func):
    def adding(*args):
        print("Welcome func {}".format(func.__name__))
        return 2 * func(*args)
    return adding

@multi
def add(a, b):
    return a + b

示例:

In [11]: def multi(func):
    ...:     def adding(*args):
    ...:         print("Welcome func {}".format(func.__name__))
    ...:         return 2 * func(*args)
    ...:     return adding
    ...: 
    ...: @multi
    ...: def add(a, b):
    ...:     return a + b
    ...: 

In [12]: add(3, 4)
Welcome func add
Out[12]: 14

相关问题 更多 >