Variablen in einer Funktionspython deklarieren
Aus irgendeinem Grund wird in meinem Code immer wieder die Fehlermeldung angezeigt, dass meine Variablen nicht deklariert wurden. Dies geschieht nur, wenn ich versuche, sie in einer Funktion und nicht außerhalb zu deklarieren.
Beispiel
x, y = 105,107
print (x,y)
Die obige Codezeile funktioniert und gibt mir die Ausgabe 105 107
aber wenn ich das unten mache
def fun1():
x, y = 105,107
print (x,y)
Ich erhalte NameError: Name 'x' ist nicht definiert
brauche Hilfe, um zu verstehen, was passiert.
Eines der Hauptdienstprogramme von Funktionen ist genau die Art und Weise, wie sie es ermöglichen, Variablen zu isolieren - keine Sorge, dass Namen für den Code in verschiedenen Funktionen zusammenstoßen - sobald eine Funktion ordnungsgemäß funktioniert, wird sie ausgeführt.
Aber wenn man Bedürfnisse Variablen belichten , dass innerhalb von Funktionen zur Außenwelt bevölkerte, ist es möglich , mit dem Stichwort „global“. Beachten Sie, dass dies im Allgemeinen als schlechte Praxis angesehen wird und selbst für kleine Skripte häufig bessere Lösungen angeboten werden. Aber gesunder Menschenverstand sollte immer die Regel sein:
def fun1():
global x, y
x, y = 105, 107
fun1()
print(x, y)
Beachten Sie, dass Ihr Code eine andere falsche Annahme hatte: Code in Funktionskörpern wird nur ausgeführt, wenn die Funktion aufgerufen wird. Selbst wenn Sie in dem Beispiel in Ihrer Frage die Variablen als global deklariert print
hätten , würde der Aufruf dennoch denselben Fehler auslösen. da Sie die Zeile, die diese Variablen definiert, nicht durch Aufrufen der Funktion ausführen.
Jetzt haben Sie etwas über "Globale" gelernt - der nächste Schritt ist, zu vergessen, dass es existiert, und zu lernen, wie man mit Variablen arbeitet, die ordnungsgemäß in Funktionen eingekapselt sind. Wenn Sie ein mittleres / fortgeschrittenes Niveau erreichen, können Sie beurteilen, wann "Globale" "könnte tatsächlich mehr Gutes als Schaden anrichten (was fast nie der Fall ist).