Heim > Artikel > Backend-Entwicklung > Warum aktualisiert der Funktionsaufruf die globale Variable nicht?
Funktionsaufruf aktualisiert globale Variable nicht
Diese Frage untersucht eine Programmierherausforderung, bei der eine globale Variable, die ursprünglich als „Falsch“ zugewiesen wurde, nicht angezeigt wird. t wird aktualisiert, wenn innerhalb einer Funktion darauf verwiesen wird. Obwohl die Funktion den Wert der globalen Variablen ändert, wird die Schleife des Hauptprogramms weiter ausgeführt, was zu einer Endlosschleife führt. Um dieses Problem zu verstehen, muss man sich mit dem Konzept von Namespaces und Variablenbereich befassen.
Namespace und Variablenbereich
Bei der Programmierung erstellt jede Funktion und jedes Modul seinen eigenen Namespace. Ein Namespace ist eine Sammlung von Namen (Variablen, Funktionen usw.), die innerhalb dieses Bereichs bekannt und zugänglich sind. Wenn einer Variablen innerhalb einer Funktion ein Wert zugewiesen wird, wird im Namensraum der Funktion eine neue Variable erstellt, auch wenn eine globale Variable mit demselben Namen vorhanden ist.
Verwendung globaler Variablen
Wenn in diesem Fall innerhalb der Funktion auf eine globale Variable namens „done“ verwiesen wird, wird eine neue lokale Variable mit demselben Namen im Namensraum der Funktion erstellt. Dieses lokale „erledigt“ unterscheidet sich vom globalen „erledigt“. Das Ändern des lokalen „done“ hat keine Auswirkungen auf die globale Variable.
Lösung
Um dies zu umgehen, muss das globale Schlüsselwort verwendet werden, um explizit auf die globale Variable darin zu verweisen die Funktion. Durch die Verwendung von global done weist die Funktion den Interpreter an, auf die globale Variable „done“ zuzugreifen, anstatt eine neue lokale Variable zu erstellen.
Geänderter Code
Um das Problem zu beheben , kann die Funktion wie folgt geändert werden:
<code class="python">def function(): global done for loop: code if not comply: done = True</code>
Erklärung
Mit global done wird eine Verbindung zwischen der innerhalb der Funktion verwendeten Variablen und der globalen Variable hergestellt. Wenn die Funktion den Wert von done ändert, aktualisiert sie dieselbe globale Variable, auf die ursprünglich verwiesen wurde. Dadurch wird sichergestellt, dass die While-Schleife des Hauptprogramms wie vorgesehen beendet wird, wenn die Funktion done auf True setzt.
Das obige ist der detaillierte Inhalt vonWarum aktualisiert der Funktionsaufruf die globale Variable nicht?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!