Was bringt das @ Zeichen?
Ich sehe, dass häufiger in Programmen, aber ich weiß nicht was das bringt. Ich kann das bei google nicht finden, weil der das Zeichen einfach ignoriert.
Was bringt das denn?
Das @ Zeichen
- gerold
- Python-Forum Veteran
- Beiträge: 5555
- Registriert: Samstag 28. Februar 2004, 22:04
- Wohnort: Oberhofen im Inntal (Tirol)
- Kontaktdaten:
Hallo INFACT!INFACT hat geschrieben:Was bringt das @ Zeichen?
Ich mag diese "Dekoratoren" nicht, weil sie meiner Meinung nach die Programme unnötig verkomplizieren, und lehne deshalb Pakete/Module kategorisch ab, die nur mit Dekoratoren funktionieren, aber man sollte ja wissen, mit was man es zu tun hat:
http://www.linux-magazin.de/content/view/full/45979
mfg
Gerold
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Im Gegenteil! Das Schreiben von eigenen Dekoratoren ist zwar etwas kompliziert, bis man das System vollständig verstanden hat, aber das Anwenden ist IMO sehr elegant und einfach nachzuvollziehen.gerold hat geschrieben:Ich mag diese "Dekoratoren" nicht, weil sie meiner Meinung nach die Programme unnötig verkomplizieren
„Lieber von den Richtigen kritisiert als von den Falschen gelobt werden.“
Gerhard Kocher
http://ms4py.org/
Gerhard Kocher
http://ms4py.org/
- Hyperion
- Moderator
- Beiträge: 7478
- Registriert: Freitag 4. August 2006, 14:56
- Wohnort: Hamburg
- Kontaktdaten:
Also mag Gerold Dekoratoren eigentlich, nur weiß er es nicht?ms4py hat geschrieben:Im Gegenteil!gerold hat geschrieben:Ich mag diese "Dekoratoren" nicht, weil sie meiner Meinung nach die Programme unnötig verkomplizieren
SCNR.
Macht meine Mutter auch gerne...
Chris:"Ich mag keine Auberginen"
Mutter: "Doch, ...."
Als Mitglied des funktionalen Mobs gilt für mich natürlich das Gegenteil von Gerolds Aussage Dekoratoren vereinfachen oftmals Programme und deshalb favorisiere ich Module, welche diese stark einsetzen.
Das Leben ist wie ein Tennisball.
-
- Python-Forum Veteran
- Beiträge: 16025
- Registriert: Freitag 20. Juni 2003, 16:30
- Kontaktdaten:
Als Mitgleid ebendiesen finde ich Dekoratoren auch voll ok und obschon ich zwar kein Fan der Syntax bin finde ich sie nützlich. Mir ist jedoch eigentlich völlig egal ob Module sie nutzen oder nicht, solange sie gut funktionieren und eine halbwegs brauchbare API haben.EyDu hat geschrieben:Als Mitglied des funktionalen Mobs gilt für mich natürlich das Gegenteil von Gerolds Aussage Dekoratoren vereinfachen oftmals Programme und deshalb favorisiere ich Module, welche diese stark einsetzen.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
- gerold
- Python-Forum Veteran
- Beiträge: 5555
- Registriert: Samstag 28. Februar 2004, 22:04
- Wohnort: Oberhofen im Inntal (Tirol)
- Kontaktdaten:
Hallo!
Ja! Geschmäcker sind verschieden.
Ich mag die Art nicht, wie Dekoratoren arbeiten. Mir kommt es immer so vor, als ob ich zuerst einmal ums Haus laufen muss, bevor ich eintreten darf.
Oft wäre das Gleiche mit einem Aufruf einer "normalen" Funktion getan. Und in solchen Fällen sehe ich Dekoratoren einfach nicht ein. Ich bin mehr für die direkte Art. Und ich setze in manchen Fällen auch gerne Funktionen innerhalb von Funktionen (Closures) ein. Weil ich da auf einen Blick sehe was vor sich geht.
Schönheit kommt auf den Betrachter an.
lg
Gerold
Ja! Geschmäcker sind verschieden.
Ich mag die Art nicht, wie Dekoratoren arbeiten. Mir kommt es immer so vor, als ob ich zuerst einmal ums Haus laufen muss, bevor ich eintreten darf.
Oft wäre das Gleiche mit einem Aufruf einer "normalen" Funktion getan. Und in solchen Fällen sehe ich Dekoratoren einfach nicht ein. Ich bin mehr für die direkte Art. Und ich setze in manchen Fällen auch gerne Funktionen innerhalb von Funktionen (Closures) ein. Weil ich da auf einen Blick sehe was vor sich geht.
Schönheit kommt auf den Betrachter an.
lg
Gerold
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
- cofi
- Python-Forum Veteran
- Beiträge: 4432
- Registriert: Sonntag 30. März 2008, 04:16
- Wohnort: RGFybXN0YWR0
Immer, dagerold hat geschrieben:Oft wäre das Gleiche mit einem Aufruf einer "normalen" Funktion getan.
Code: Alles auswählen
@bar
def foo(..):
...
Code: Alles auswählen
def foo(..):
...
foo = bar(foo)
z.b. bei der Routenregistrierung sind Dekoratoren eine feine Sache, da laeuft man zwar erst ums Haus und tritt dann ein, die Alternative ist aber, erst einzutreten und dann nochmal rumzulaufen, wobei der Aufruf
Code: Alles auswählen
route(foo, "/foobar/spam")
Michael Markert ❖ PEP 8 Übersetzung ❖ Tutorial Übersetzung (3.x) ⇒ Online-Version (Python 3.3) ❖ Deutscher Python-Insider ❖ Projekte
- gerold
- Python-Forum Veteran
- Beiträge: 5555
- Registriert: Samstag 28. Februar 2004, 22:04
- Wohnort: Oberhofen im Inntal (Tirol)
- Kontaktdaten:
Hallo cofi!cofi hat geschrieben:Immer, dagerold hat geschrieben:Oft wäre das Gleiche mit einem Aufruf einer "normalen" Funktion getan.Code: Alles auswählen
@bar def foo(..): ...
Code: Alles auswählen
def foo(..): ... foo = bar(foo)
Nein, auf das hatte ich gar nicht angespielt. Eher auf so etwas:
So:
Code: Alles auswählen
@render_template("/homepagetemplates/homepage.tmpl")
def get_homepage(*args, **kwargs):
retvals = {
"vorname": u"Gerold",
"nachname": u"Penz"
}
return retvals
Code: Alles auswählen
def get_homepage(*args, **kwargs):
retvals = {
"vorname": u"Gerold",
"nachname": u"Penz"
}
return render_template("/homepagetemplates/homepage.tmpl", retvals)
lg
Gerold
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
- cofi
- Python-Forum Veteran
- Beiträge: 4432
- Registriert: Sonntag 30. März 2008, 04:16
- Wohnort: RGFybXN0YWR0
Das war mir schon klar ⇒gerold hat geschrieben:Nein, auf das hatte ich gar nicht angespielt.
Aber auch bei deinem Beispiel bevorzuge ich den Dekorator, da die verknuepfung mit dem Template hier einfach prominenter ist.
Zugegeben, ist es nicht optimal, da der Dekorator die eigentliche Arbeit erledigt und man das beim eigenen Aufruf besser sieht.
Michael Markert ❖ PEP 8 Übersetzung ❖ Tutorial Übersetzung (3.x) ⇒ Online-Version (Python 3.3) ❖ Deutscher Python-Insider ❖ Projekte
@gerold: Bei einem Dekorator hat man die Chance vor und nach dem Aufruf der dekorierten Funktion etwas zu tun, zum Beispiel könnte man vorher prüfen ob das Template überhaupt existiert und falls nicht eine Fehlerseite ausliefern bevor die Funktion `get_homepage()` überhaupt aufgerufen wird. Mehr noch: man kann schon beim Initialisieren des Moduls diese Überprüfung vornehmen, weil der Dekorator zu dem Zeitpunkt ja schon ausgeführt wird. Da kann man dann zum Beispiel nach dem Template in verschiedenen Pfaden suchen.