2017-08-05 65 views
0

我想了解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) 

回答

1

你幾乎有它。你只需要通過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 

例返回func你的裝飾裏面和繁衍的結果:

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 
+0

感謝你的幫助,我幾乎花了兩天時間試圖弄明白,時間學習裝飾類。 Thx再次 – 2013CH