Dekoratoren sind nur ein anderer Syntax für folgendes
Spam wird also umdefiniert als das Ergebnis von MeinDeco, auf Spam angewendet. Dies kann man nun so schreiben:
Grund für diese in meinen Augen misslungenen Syntax ist, das man in Python, um Class methods oder Static methods zu implementieren, man immer folgendes machen musste:
Code: Alles auswählen
class Foo:
def meinestatic(x):
return x
meinestatic = staticmethod(x)
Dies sahen viele als unpytonisch an, weil man erst
nach der Funktionsdefinition sieht, was sie wirklich ist.
heisst nichts anderes: nachdem blubb definiert ist, ersetze blubb durch blabla(blubb)
Mit currying bezeichnet man die Sichtweise, dass man eine Funktion mit 2 Parametern die etwas zurückgibt als eine Funktion mit einem Parameter, die eine Funktion zurückgibt, auffassen kann.
Nehmen wir mal die polnische Notation für die Grundrechenarten an:
+ 3 4
Nun kann man sagen: + ist eine Funktion, die 2 Zahlen übernimmt, und einen Zahl zurückgibt, oder, Plus angewandt auf eine Zahl ergibt einen Operator, der, angewandt auf eine Zahl, die addition mit der ursprünglichen Zahl darstellt:
+ 3 wäre dann z.B. eine Funktion F , für die gilt:
F x = x+3
Daselbe gilt natürlich auch für 3 und mehr Parameter[/code]