@Sirius3: Ja, ich habe auch ein Script mit zwei globalen Variablen, nur weise ich dann darauf hin. Ob in Büchern oder Tutorials, es wird zu wenig darauf hingewiesen, was sich nicht nur auf Python bezieht. In JS und PHP habe ich mir z.B. angewöhnt, in Seiten, in denen ich nicht weiß, was möglicherweise noch alles eingebunden wird, globale Variablen oder Bezeichern von Klassen mit meinen Initialen oder Initialen von der Domain zu beginnen. Ein Plugin ist mal verschwunden, weil bereits ein gleichnamiges existierte und meins ersetzte.
@mz002: Habe jetzt noch in Folge 15 geschaut. Keine Ahnung, ob er erklärt hat, aus welchem Grund in den Beispielen Event-Handler benutzt werden, obwohl command = funktions_name genügt hätte.
Code: Alles auswählen
# aus Video:
b = tkinter.Button(top,text = 'Hier Klicken')
b.pack()
b.bind('<Button-1>', handleButton)
# würde es so schreiben:
button_name = tkinter.Button(top, text = 'Hier Klicken', command = handleButton)
button_name.pack()
Ob Du privat Funktionsnamen in camelCase oder camel_case schreibst, bleibt Dir überlassen, wobei die Betonung auf privat liegt. Doch so wie in Teil 3, dass da auch Variablen in camelCase statt in camel_case geschrieben wurden, solltest Du Dir gar nicht erst angewöhnen. Also wenigstens einmal lesen:
"Style Guide for Python Code"
Es ist so, wie Sirius3 schreibt, es geht nicht immer ohne globale Varibalen. Doch so allgemein, z.B. wären die folgenden Beispiele in PHP nicht möglich, ohne eine Mitteilung wie "Fatal error: Cannot redeclare ..." zu erhalten. In Python wird in IDLE kein Fehler geworfen, da wird einfach eine Klasse oder eine Funktion durch eine zweite gleichnamige überschrieben. Bei Variablen werden ohnehin keine Warnungen ausgegeben, weder in JS, PHP oder Python und somit hat man sich allein um den Bereich zu kümmern, in dem eine Variable sichtbar oder gültig ist und global sollte halt nur wohl überlegt eingesetzt werden. Je mehr Variablen global, je fehleranfälliger.
Code: Alles auswählen
# Test - Bezeichner von Klassen - erste wird durch zweite ohne Warnung überschrieben.
class Musterklasse:
def tue_etwas():
print("#Ausgabe: Test 1")
class Musterklasse:
def tue_etwas():
print("#Ausgabe: Test 2")
Musterklasse.tue_etwas()
#Ausgabe: Test 2
# Test - Bezeichner von Funktionen - erste wird durch zweite ohne Warnung überschrieben.
def tue_anderes():
print("#Ausgabe: Test 3")
def tue_anderes():
print("#Ausgabe: Test 4")
tue_anderes()
#Ausgabe: Test 4