Heim  >  Artikel  >  Backend-Entwicklung  >  Warum aktualisiert der Funktionsaufruf die globale Variable nicht?

Warum aktualisiert der Funktionsaufruf die globale Variable nicht?

Barbara Streisand
Barbara StreisandOriginal
2024-10-19 12:00:29499Durchsuche

Why Does Function Call Not Update Global Variable?

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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn