„Wenn ein Arbeiter seine Arbeit gut machen will, muss er zuerst seine Werkzeuge schärfen.“ – Konfuzius, „Die Gespräche des Konfuzius. Lu Linggong“
Titelseite > Programmierung > Warum aktualisiert der Funktionsaufruf die globale Variable nicht?

Warum aktualisiert der Funktionsaufruf die globale Variable nicht?

Veröffentlicht am 01.11.2024
Durchsuche:399

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 aktualisiert 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 eine neue Variable im Namensraum der Funktion erstellt, auch wenn eine globale Variable mit demselben Namen vorhanden ist.

Verwenden 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 Auswirkung 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 , die Funktion kann wie folgt geändert werden:

def function():
    global done
    for loop:
        code
        if not comply:
            done = True

Explanation

Mit global done wird eine Verbindung zwischen der in 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.

Freigabeerklärung Dieser Artikel wird unter folgender Adresse abgedruckt: 1729310358 Bei Verstößen wenden Sie sich bitte an [email protected], um ihn zu löschen
Neuestes Tutorial Mehr>

Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.

Copyright© 2022 湘ICP备2022001581号-3