Wofür das (*args)

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
red | Ali
User
Beiträge: 34
Registriert: Samstag 31. Oktober 2020, 16:39

Hallo,
ich habe eine Frage zu dem .bind() Command. Und zwar, wenn ich etwas an z.B. <Return> binde, und es bei Return eine Funktion ausgeführt werden soll, muss in dieser Funktion (*args) stehen.
Warum?

Code: Alles auswählen

    paswd.bind('<Return>', log)

def log(*args):
    print('Enter gedrückt')
Sirius3
User
Beiträge: 18274
Registriert: Sonntag 21. Oktober 2012, 17:20

Nein, da muß nicht *args stehen, sondern da sollte eine Funktion gebunden werden, die ein Argument übergeben bekommt, nämlich event.
Oft wird mit dem Event wenig gemacht.

Code: Alles auswählen

    paswd.bind('<Return>', log)

def log(event):
    print('Enter gedrückt')
Benutzeravatar
__blackjack__
User
Beiträge: 14053
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

Und es ist auch besser da nicht ``*args`` hin zu schreiben, denn damit muss sich der Leser ja fragen was das denn nun genau ist. Wenn da `event` oder `_event` steht, dann ist das verständlicher.
“Vir, intelligence has nothing to do with politics!” — Londo Mollari
red | Ali
User
Beiträge: 34
Registriert: Samstag 31. Oktober 2020, 16:39

Sirius3 hat geschrieben: Dienstag 22. Dezember 2020, 13:26 Nein, da muß nicht *args stehen, sondern da sollte eine Funktion gebunden werden, die ein Argument übergeben bekommt, nämlich event.
Oft wird mit dem Event wenig gemacht.

Code: Alles auswählen

    paswd.bind('<Return>', log)

def log(event):
    print('Enter gedrückt')
Okay, danke.
Aber warum braucht man das im Allgemeinen? Wenn ja <Return> gedrückt wird, soll ja nur diese Funktion ausgeführt werden. Und ist ein 'Event' einfach, wenn irgendwas passiert?
__deets__
User
Beiträge: 14545
Registriert: Mittwoch 14. Oktober 2015, 14:29

Der bind-Mechanismus ist generisch. Der funktioniert fuer alle moeglichen Arten von Ereignissen. Und da kann es noch zusaetzliche, wertvolle Informationen geben, die ein Ereignis mitliefert. ZB bei einem Button-Click der Maus will man ja auch oft wissen WO das passiert ist. Die Koordinate steht dann im Event-Objekt zur Verfuegung.

Und ich hab's schonmal erwaehnt: bitte keine full-quotes von Posts!
Antworten