簡體   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