2017-08-05 3 views
0

Ich versuche, über Python decorators zu lernen, aber immer noch verwirrt. Ich versuche, den folgenden Fehler zu lösen: "Erstellen Sie eine Funktion, um zwei Zahlen zu kombinieren, und erstellen Sie dann einen Dekorator, der das Ergebnis verdoppelt."Versuchen, Python Dekoratoren zu verstehen

Mein Code:

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) 

Antwort

1

Sie fast es haben. Sie müssen nur func in Ihrem Dekorateur zurückzukehren und das Ergebnis durch 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 

Beispiel zu multiplizieren:

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

Dank für Ihre Hilfe danken, fast verbrachte ich zwei Tage versucht, es herauszufinden, Zeit lerne dekorieren von Klassen. Danke nochmal – 2013CH

Verwandte Themen