Python global, local and non-local variables
Table of Contents
In diesem Tutorial erfahren Sie mehr über globale Python-Variablen, lokale Variablen, nicht-lokale Variablen und deren Verwendung.
Globale Variablen
In Python wird eine außerhalb der Funktion oder im globalen Geltungsbereich deklarierte Variable als globale Variable bezeichnet. Das bedeutet, dass auf eine globale Variable innerhalb oder außerhalb der Funktion zugegriffen werden kann.
Sehen wir uns ein Beispiel an, wie eine globale Variable in Python erstellt wird.
Beispiel 1: Erstellen Sie eine globale Variable
x = "global" def foo(): print("x innerhalb:", x) foo() print("x draußen:", x)
Output
x innerhalb: global x draußen: global
Im obigen Code haben wir erstellt x als globale Variable und definiert a foo()
um die globale Variable zu druckenx. Schließlich nennen wir die foo()
was den Wert von druckt x.
Was ist, wenn Sie den Wert von ändern möchten x innerhalb einer Funktion?
x = "global" def foo(): x = x * 2 print(x) foo()
Output
UnboundLocalError: local variable 'x' referenced before assignment
Die Ausgabe zeigt einen Fehler an, da Python . behandelt x als lokale Variable und x ist auch innen nicht definiert foo()
.
Damit dies funktioniert, verwenden wir die global
Stichwort. Besuchen Sie Python Global Keyword, um mehr zu erfahren.
Lokale Variablen
Eine im Funktionsrumpf oder im lokalen Gültigkeitsbereich deklarierte Variable wird als lokale Variable bezeichnet.
Beispiel 2: Zugriff auf lokale Variable außerhalb des Gültigkeitsbereichs
def foo(): y = "local" foo() print(y)
Output
NameError: name 'y' is not defined
Die Ausgabe zeigt einen Fehler an, weil wir versuchen, auf eine lokale Variable zuzugreifen y
in einem globalen Geltungsbereich, während die lokale Variable nur innerhalb funktioniert foo()
oder lokaler Geltungsbereich.
Sehen wir uns ein Beispiel an, wie eine lokale Variable in Python erstellt wird.
Beispiel 3: Erstellen Sie eine lokale Variable
Normalerweise deklarieren wir eine Variable innerhalb der Funktion, um eine lokale Variable zu erstellen.
def foo(): y = "local" print(y) foo()
Output
local
Werfen wir einen Blick auf die früheres problem wo x war eine globale Variable und wir wollten sie ändern x innerhalb foo()
.
Globale und lokale Variablen
Hier zeigen wir, wie Sie globale Variablen und lokale Variablen im selben Code verwenden.
Beispiel 4: Verwenden von globalen und lokalen Variablen im gleichen Code
x = "global " def foo(): global x y = "local" x = x * 2 print(x) print(y) foo()
Output
global global local
Im obigen Code deklarieren wir x als globaler und y als lokale Variable im foo()
.
Dann verwenden wir den Multiplikationsoperator *
um die globale Variable zu ändern x und wir drucken beide x and y.
Nach dem Aufruf des foo()
, der Wert von x wird global global
weil wir die benutzt haben x * 2
zum zweimaligen Drucken global
. Danach drucken wir den Wert der lokalen Variable y d.h. local
.
Beispiel 5: Globale Variable und lokale Variable mit gleichem Namen
x = 5 def foo(): x = 10 print("local x:", x) foo() print("global x:", x)
Output
local x: 10 global x: 5
Im obigen Code haben wir den gleichen Namen verwendet x sowohl für globale als auch für lokale Variable. Wir erhalten ein anderes Ergebnis, wenn wir dieselbe Variable ausgeben, da die Variable in beiden Gültigkeitsbereichen deklariert ist, d. h. im lokalen Gültigkeitsbereich darin foo()
und globaler Geltungsbereich außerhalb foo()
.
Wenn wir die Variable nach innen druckenfoo()
es gibt aus local x: 10
. Dies wird als lokaler Gültigkeitsbereich der Variablen bezeichnet.
Ähnlich verhält es sich, wenn wir die Variable außerhalb der foo()
, es gibt aus global x: 5. Dies wird als globaler Gültigkeitsbereich der Variablen bezeichnet.
Nichtlokale Variablen
Nichtlokale Variablen werden in verschachtelten Funktionen verwendet, deren lokaler Geltungsbereich nicht definiert ist. Das bedeutet, dass sich die Variable weder im lokalen noch im globalen Gültigkeitsbereich befinden kann.
Sehen wir uns ein Beispiel an, wie eine nicht lokale Variable in Python verwendet wird.
Wir gebrauchen nonlocal
Schlüsselwörter zum Erstellen nicht lokaler Variablen.
Beispiel 6: Erstellen Sie eine nicht lokale Variable
def outer(): x = "local" def inner(): nonlocal x x = "nonlocal" print("inner:", x) inner() print("outer:", x) outer()
Output
inner: nonlocal outer: nonlocal
Im obigen Code gibt es ein verschachteltes inner()
Funktion. Wir gebrauchen nonlocal
Schlüsselwörter, um eine nicht lokale Variable zu erstellen. Die inner()
Funktion ist im Umfang einer anderen Funktion definiert outer()
.
Notiz
Wenn wir den Wert einer nicht lokalen Variablen ändern, erscheinen die Änderungen in der lokalen Variablen.