繁体   English   中英

试图了解python装饰器

[英]Trying to understand python decorators

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

我的代码:

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)

您几乎拥有它。 您只需要在装饰器中返回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

暂无
暂无

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

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