Einführung in Scope in Python

Der Bereich definiert die Zugänglichkeit des Python-Objekts. Um auf die bestimmte Variable im Code zuzugreifen, muss der Gültigkeitsbereich definiert werden, da von keiner Stelle im Programm aus darauf zugegriffen werden kann. Der spezielle Codierungsbereich, in dem Variablen sichtbar sind, wird als Gültigkeitsbereich bezeichnet. Variablen sind nicht für den gesamten Code sichtbar. Die Sichtbarkeit kann eingeschränkt werden. Der Bereich überprüft, welche Variable 'gesehen' werden kann. Der Bereich definiert die Regeln, die uns mitteilen, wie und wo eine Variable durchsucht werden kann. Die Variable wird entweder durchsucht, um einen Wert abzurufen oder um einen Wert zuzuweisen. Namespace ist die eindeutige Identifikation der Variablen oder der Methode. Der Namespace teilt dem Python-Interpreter den Namen des Objekts und den Ort mit, von dem aus er versucht, darauf zuzugreifen.

Die Namespaces werden gemäß der LEGB-Regel nach der Bereichsauflösung durchsucht. Das LEGB steht für: L: Lokal, E: Eingeschlossen, G: Global, B: Eingebaut. Die Reihenfolge der LEGB ist wichtig. Die Variable wird zuerst in Local durchsucht, gefolgt von Enclosed, dann global und schließlich integriert.

Geltungsbereichstypen in Python

Lassen Sie uns untersuchen, wie eine Variable deklariert wird und wie auf ihren Bereich zugegriffen wird:

1. Lokaler Bereich

Die in der Funktion definierten Variablen sind ein lokaler Gültigkeitsbereich der Variablen. Diese Variablen werden im Funktionskörper definiert. Lassen Sie uns dieses Konzept anhand eines Beispiels verstehen. In diesem Beispiel 1 haben wir eine Variable num genommen. Num = 0 ist außerhalb der Funktion definiert, daher handelt es sich nicht um eine lokale Variable. Nach unserer Definition handelt es sich bei den Variablen, die im Funktionskörper deklariert sind, um eine lokale Variable. Hier ist num = 1 eine lokale Variable, die innerhalb der Funktionsdemo deklariert und gedruckt wird. Wenn wir diesen Code ausführen, wird die Ausgabe unten angegeben.

Beispiel 1:

Code:

num=0
def demo():
#print(num)
num=1
print("The Number is:", num)
demo()

Ausgabe:

Num ist lokal für die Funktion. Wenn wir in der Funktion den Variablenwert num verwenden, bevor wir ihn lokal deklarieren, wird ein Fehler ausgelöst.

Siehe Beispiel 2: Hier löst die erste print-Anweisung einen Python-Fehler aus, da vor der Zuweisung versucht wird, darauf zuzugreifen.

Beispiel # 2:

Code:

num=0
def demo():
print(num) //Raises an Error
num=1
print("The Number is:", num)
demo()

Ausgabe:

2. Globaler Geltungsbereich

Die Variable, die von einer beliebigen Stelle im Programm gelesen werden kann, wird als globaler Bereich bezeichnet. Auf diese Variablen kann innerhalb und außerhalb der Funktion zugegriffen werden. Wenn wir dieselbe Variable im Rest des Programms verwenden wollen, deklarieren wir sie als global.

Im folgenden Beispiel 1 haben wir eine Variable Str deklariert, die außerhalb der Funktion liegt. Die Funktionsdemo wird aufgerufen und gibt den Wert der Variablen Str aus. Um eine globale Variable in einer Funktion zu verwenden, muss das Schlüsselwort global nicht verwendet werden.

Beispiel 1:

Code:

def demo():
print(Str)
# Global
Str = "You are clever"
demo()

Ausgabe:

Im folgenden Beispiel 2 haben wir versucht, den Wert der globalen Variablen Str innerhalb der Funktion zu ändern, weshalb eine Ausnahme ausgelöst wurde. Wenn wir die Variable innerhalb der Funktion ändern oder einen neuen Wert zuweisen, müssen wir global schreiben. Wenn Sie einem Python-Interpreter mitteilen möchten, dass Sie eine globale Variable verwenden möchten, wird das Schlüsselwort "global" verwendet. Wenn es nicht als global deklariert wurde, behandelt Python diese Variable als lokal, wenn sie innerhalb der Funktion erstellt oder geändert wird. In dieser ersten Zeile wird eine Ausnahme ausgelöst, da Python davon ausgeht, dass die Zuweisung als lokale Variable aufgrund der Zuweisung zu str innerhalb der Funktion demo () erfolgen soll.

Beispiel # 2:

Code:

def demo():
print(Str)
Str = "You are smart"
print(Str)
# Global scope
Str = "You are Clever"
demo()
print(Str)

Ausgabe:

Wenn wir den Wert der globalen Variablen innerhalb der Funktion ändern möchten, wird das globale Schlüsselwort verwendet.

Das folgende Beispiel 3 löste das oben auftretende Problem.

Beispiel # 3:

Code:

def demo():
global Str
print(Str)
Str = "You are smart"
print(Str)
# Global scope
Str = "You are Clever"
demo()
print(Str)

Ausgabe:

3. Nicht lokaler oder umschließender Bereich

Nichtlokale Variable ist die Variable, die in der verschachtelten Funktion definiert ist. Dies bedeutet, dass die Variable weder im lokalen noch im globalen Bereich liegen kann. Zum Erstellen einer nicht lokalen Variablen wird ein nicht lokales Schlüsselwort verwendet. Im folgenden Code haben wir eine äußere Funktion erstellt und es gibt eine verschachtelte Funktion inner (). Im Umfang der Funktion outer () wird die Funktion inner () definiert. Wenn wir die nichtlokale Variable ändern, wie sie in der Funktion inner () definiert ist, wirken sich Änderungen auch auf die äußere Funktion aus.

Beispiel 1:

Code:

def func_outer():
x = "local"
def func_inner():
nonlocal x
x = "nonlocal"
print("inner:", x)
func_inner()
print("outer:", x)
func_outer()

Ausgabe:

Wenn wir nur den Wert der äußeren Funktion verwenden und keine Änderungen vornehmen möchten, kommentieren Sie die Zeile (nicht lokal a).

Beispiel # 2:

Code:

def func_outer():
a = "local"
def func_inner():
#nonlocal a
a = "nonlocal"
print("inner:", a)
func_inner()
print("outer:", a)
func_outer()

Ausgabe:

4. Eingebauter Bereich

Wenn eine Variable nicht im lokalen, geschlossenen oder globalen Bereich definiert ist, sucht Python sie im integrierten Bereich. Im folgenden Beispiel wird 1 aus dem Mathematikmodul pi importiert und der Wert von pi ist nicht in global, lokal und eingeschlossen definiert. Python sucht dann im integrierten Bereich nach dem pi-Wert und gibt den Wert aus. Daher sollte der Name, der bereits im integrierten Bereich vorhanden ist, nicht als Bezeichner verwendet werden.

Beispiel 1:

Code:

# Built-in Scope
from math import pi
# pi = 'Not defined in global pi'
def func_outer():
# pi = 'Not defined in outer pi'
def inner():
# pi = 'not defined in inner pi'
print(pi)
inner()
func_outer()

Ausgabe:

Fazit - Umfang in Python

In diesem Artikel haben wir etwas über den Gültigkeitsbereich der Python-Variablen gelernt. Wir haben vier Arten von Gültigkeitsbereichen gelernt: globaler Gültigkeitsbereich, lokaler Gültigkeitsbereich, geschlossener Gültigkeitsbereich und integrierter Gültigkeitsbereich. Wir haben auch gelernt, wann globale und nicht-lokale Schlüsselwörter zu verwenden sind. Ich hoffe, Sie haben dieses Konzept verstanden.

Empfohlener Artikel

Dies ist eine Anleitung zu Scope in Python. Hier werden die Scope-Typen in Python und ihre Beispiele zusammen mit der Codeimplementierung und -ausgabe erläutert. Sie können auch unsere anderen verwandten Artikel durchgehen, um mehr zu erfahren -

  1. Tupel in Python mit Typen
  2. Übersicht über die Kapselung in Python
  3. Python-Alternativen | Top 6
  4. Einführung in die Vererbung in Python