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
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