Die Geschichte der Manipulation globaler Python-Variablen

Globale und lokale Variablen

Ich habe es mehrmals durcheinander gebracht, als ich es in Python implementiert habe, also mach dir eine Notiz für mich. Es ist verständlich, dass dieser Code das folgende Ergebnis zurückgibt.

x = 1

def func1():
    print(x)

def func2():
    x = "hoge"
    print(x)

func1()
func2()

>>> 1
>>> hoge

Wenn in Python auf eine Variable verwiesen wird, wird auf den globalen Bereich verwiesen, wenn dieser nicht im lokalen Bereich deklariert ist.

Wenn die Variable vor dem Umschreiben der Variablen im lokalen Bereich nicht deklariert wird, wird ein Fehler zurückgegeben.

def func3():
    y += 1
    y = 5
    print(y)

func3()

>>> Traceback (most recent call last):
>>>   File "/test.py", line 8, in <test>
>>>     func3()
>>>   File "/test.py", line 4, in func3
>>>     y += 1
>>> UnboundLocalError: local variable 'y' referenced before assignment

Ich habe es bisher verstanden, aber als es um globale Variablen ging, war ich sofort verwirrt. Mit anderen Worten, wenn eine als globale Variable deklarierte Variable bearbeitet wird, muss sie explizit deklariert werden, und normalerweise wird ein Fehler zurückgegeben.

x = 1

def func4():
    x += 1 #Zu diesem Zeitpunkt kann x noch nicht referenziert werden
    x = 5 #Zu diesem Zeitpunkt wird dem lokalen Bereich die Variable x hinzugefügt
    print(x)

func4()

>>> Traceback (most recent call last):
>>>   File "/test.py", line 8, in <test>
>>>     func4()
>>>   File "/test.py", line 4, in func4
>>>     x += 1 
>>> UnboundLocalError: local variable 'x' referenced before assignment

Was soll ich dann tun?

Die Lösung ist einfach. Wenn Sie globale Variablen verwenden, machen Sie deutlich, dass es sich um globale Variablen handelt.

x = 1

def func5():
    global x #Seien Sie explizit eine globale Variable
    x += 1 
    print(x)

def func6():
    x = 10 #Seien Sie explizit eine lokale Variable
    x += 1
    print(x)

func5()
func6()

>>> 2
>>> 11

Recommended Posts

Die Geschichte der Manipulation globaler Python-Variablen
Die Geschichte von Python und die Geschichte von NaN
[Python] Überprüfen Sie den Speicherverbrauch von Variablen
Die Geschichte der Verarbeitung A von Blackjack (Python)
der Zen von Python
Die Geschichte von sys.path.append ()
Die Geschichte, dass die Lernkosten von Python niedrig sind
Bildverarbeitung? Die Geschichte, Python für zu starten
Die Geschichte des Lesens von HSPICE-Daten in Python
Die Geschichte des Baus von Zabbix 4.4
Auf dem Weg zum Ruhestand von Python2
Die Geschichte von Python ohne Inkrement- und Dekrementoperatoren.
Die Geschichte von FileNotFound im Python open () -Modus = 'w'
Deklaration globaler Variablen der C-Sprache
Über die Funktionen von Python
Die Geschichte der automatischen Sprachkonvertierung von TypeScript / JavaScript / Python
Die Kraft der Pandas: Python
Die Geschichte der Implementierung des Themas Facebook Messenger Bot mit Python
Sakura Die Geschichte, wie die Python-Flasche im Internet funktioniert hat
Berücksichtigung von Python-Dekoratoren des Typs, der Variablen übergibt
Die Geschichte eines Rubinisten, der mit Python :: Dict-Daten mit Pycall kämpft
[Python] Tensorflow 2.0 unterstützte Python 3.8 nicht, daher die Geschichte des Downgrades von Python
Initialisierung globaler Variablen mit Python-Dekoratoren
[Python] Der Stolperstein des Imports
Erster Python 3 ~ Der Beginn der Wiederholung ~
Existenz aus Sicht von Python
pyenv-change die Python-Version von virtualenv
Verwendung globaler Variablen in Python-Funktionen
Die Geschichte des "Lochs" in der Akte
[Python] Die potenzielle Feldplanung von Python Robotics verstehen
Überprüfung der Grundlagen von Python (FizzBuzz)
Die Geschichte des erneuten Bereitstellens des Anwendungsservers
Informationen zur Grundlagenliste der Python-Grundlagen
Geschichte der Potenznäherung von Python
Die Geschichte des Exportierens eines Programms
Lernen Sie die Grundlagen von Python ① Grundlegende Anfänger
Die Geschichte, dass die Version von Python 3.7.7 nicht an Heroku angepasst wurde
Der 14. März ist der Tag des Umfangsverhältnisses. Die Geschichte der Berechnung des Umfangsverhältnisses mit Python
[Python] -Variablen
Die Geschichte, einen Standardtreiber für db mit Python zu erstellen.
Die Geschichte, ein Modul zu erstellen, das E-Mails mit Python überspringt
[Python3] Definieren Sie globale Variablen in einer Funktion dynamisch
Ändern Sie die Länge der Python-CSV-Zeichenfolgen
Die Geschichte des Versuchs, den Client wieder zu verbinden
Überprüfen Sie das Verhalten des Zerstörers in Python
Die Geschichte eines Fehlers in PyOCR
[Python3] Verstehe die Grundlagen von Beautiful Soup
Lernen Sie die Grundlagen, während Sie Python-Variablen berühren
Übergeben Sie den Pfad des importierten Python-Moduls
Die Geschichte, MeCab in Ubuntu 16.04 zu setzen
Notizen vom Anfang von Python 1 lernen
[Python3] Schreiben Sie das Codeobjekt der Funktion neu
Ich kannte die Grundlagen von Python nicht
Die Geschichte einer unveränderlichen Form
[Python] Probieren Sie pydash der Python-Version von lodash aus