Das @ Zeichen

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
INFACT
User
Beiträge: 385
Registriert: Freitag 5. Dezember 2008, 16:08

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?
[b][i]ein kleines game für die die lust haben http://konaminut.mybrute.com[/i][/b]
;-)
EyDu
User
Beiträge: 4881
Registriert: Donnerstag 20. Juli 2006, 23:06
Wohnort: Berlin

Das Leben ist wie ein Tennisball.
Benutzeravatar
gerold
Python-Forum Veteran
Beiträge: 5555
Registriert: Samstag 28. Februar 2004, 22:04
Wohnort: Oberhofen im Inntal (Tirol)
Kontaktdaten:

INFACT hat geschrieben:Was bringt das @ Zeichen?
Hallo INFACT!

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.
ms4py
User
Beiträge: 1178
Registriert: Montag 19. Januar 2009, 09:37

gerold hat geschrieben:Ich mag diese "Dekoratoren" nicht, weil sie meiner Meinung nach die Programme unnötig verkomplizieren
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.
„Lieber von den Richtigen kritisiert als von den Falschen gelobt werden.“
Gerhard Kocher

http://ms4py.org/
Benutzeravatar
Hyperion
Moderator
Beiträge: 7478
Registriert: Freitag 4. August 2006, 14:56
Wohnort: Hamburg
Kontaktdaten:

ms4py hat geschrieben:
gerold hat geschrieben:Ich mag diese "Dekoratoren" nicht, weil sie meiner Meinung nach die Programme unnötig verkomplizieren
Im Gegenteil!
Also mag Gerold Dekoratoren eigentlich, nur weiß er es nicht? :-D

SCNR.

Macht meine Mutter auch gerne...

Chris:"Ich mag keine Auberginen"
Mutter: "Doch, ...."

;-)
EyDu
User
Beiträge: 4881
Registriert: Donnerstag 20. Juli 2006, 23:06
Wohnort: Berlin

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.
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

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.
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.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Benutzeravatar
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
:-)
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Benutzeravatar
cofi
Python-Forum Veteran
Beiträge: 4432
Registriert: Sonntag 30. März 2008, 04:16
Wohnort: RGFybXN0YWR0

gerold hat geschrieben:Oft wäre das Gleiche mit einem Aufruf einer "normalen" Funktion getan.
Immer, da

Code: Alles auswählen

@bar
def foo(..):
    ...

Code: Alles auswählen

def foo(..):
    ...
foo = bar(foo)
:twisted:

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")
eben nicht mehr ganz so klar ist. Aber vielleicht bin ich da zu sehr Teil des funktionalen Mobs :)
Benutzeravatar
gerold
Python-Forum Veteran
Beiträge: 5555
Registriert: Samstag 28. Februar 2004, 22:04
Wohnort: Oberhofen im Inntal (Tirol)
Kontaktdaten:

cofi hat geschrieben:
gerold hat geschrieben:Oft wäre das Gleiche mit einem Aufruf einer "normalen" Funktion getan.
Immer, da

Code: Alles auswählen

@bar
def foo(..):
    ...

Code: Alles auswählen

def foo(..):
    ...
foo = bar(foo)
Hallo cofi!

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
oder so:

Code: Alles auswählen

def get_homepage(*args, **kwargs):
    retvals = {
        "vorname": u"Gerold",
        "nachname": u"Penz"
    }
    return render_template("/homepagetemplates/homepage.tmpl", retvals)
Ich frage mich, warum ich für so eine einfache, wunderbar direkt verwendbare nicht verwirrende Sache so etwas wie einen Dekorator brauche. :K Aber was soll´s. Ich muss ja nicht alles verkomplizieren. Es genügt wenn es andere Programmierer tun. ;-)

lg
Gerold
:-)
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Benutzeravatar
cofi
Python-Forum Veteran
Beiträge: 4432
Registriert: Sonntag 30. März 2008, 04:16
Wohnort: RGFybXN0YWR0

gerold hat geschrieben:Nein, auf das hatte ich gar nicht angespielt.
Das war mir schon klar ⇒ :twisted:

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.
BlackJack

@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.
Antworten