Wprowadzenie do zakresu w Pythonie

Zakres określa dostępność obiektu python. Aby uzyskać dostęp do konkretnej zmiennej w kodzie, należy zdefiniować zakres, ponieważ nie można uzyskać do niego dostępu z dowolnego miejsca w programie. Konkretny region kodowania, w którym widoczne są zmienne, jest znany jako zakres. Zmienne nie są widoczne dla całego kodu, jego widoczność może być ograniczona. Zakres sprawdza, która zmienna może być „Widoczna”. Zakres określa zestaw reguł, które mówią nam, jak i gdzie można przeszukiwać zmienną. Zmienna jest przeszukiwana w celu pobrania wartości lub przypisania wartości. Przestrzeń nazw to unikalna identyfikacja zmiennej lub metody. Przestrzeń nazw informuje interpretera języka Python o nazwie obiektu i lokalizacji, z której próbuje uzyskać do niego dostęp.

Przestrzenie nazw są wyszukiwane pod kątem rozdzielczości zakresu zgodnie z regułą LEGB. LEGB oznacza: L: lokalny, E: zamknięty, G: globalny, B: wbudowany. Ważna jest sekwencja LEGB. Zmienna jest najpierw przeszukiwana w Local, następnie Enclosed, następnie global i wreszcie wbudowana.

Typy zakresu w Pythonie

Przeanalizujmy, jak zadeklarować zmienną i jak uzyskać dostęp do jej zakresu:

1. Lokalny zakres

Zmienne zdefiniowane w funkcji są lokalnym zakresem zmiennej. Te zmienne są zdefiniowane w treści funkcji. Rozumiemy tę koncepcję na podstawie przykładu. W tym przykładzie 1 wzięliśmy jedną zmienną num. Num = 0 jest zdefiniowane poza funkcją, więc nie jest zmienną lokalną. Zgodnie z naszą definicją zmienne zadeklarowane w ciele funkcji są zmiennymi lokalnymi. Tutaj num = 1 jest lokalną zmienną zadeklarowaną i wydrukowaną wewnątrz demonstracji funkcji. Jeśli uruchomimy ten kod, dane wyjściowe są podane poniżej.

Przykład 1:

Kod:

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

Wynik:

Num jest lokalny dla funkcji. Kiedy używamy wartości zmiennej num w funkcji przed deklarowaniem jej lokalnie, pojawia się błąd.

Zobacz przykład 2: tutaj pierwsza instrukcja print wywołuje błąd w pythonie, gdy próbujemy uzyskać do niego dostęp przed przypisaniem.

Przykład 2:

Kod:

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

Wynik:

2. Globalny zakres

Zmienna, którą można odczytać z dowolnego miejsca w programie, jest znana jako zakres globalny. Dostęp do tych zmiennych można uzyskać zarówno wewnątrz, jak i na zewnątrz funkcji. Kiedy chcemy użyć tej samej zmiennej w pozostałej części programu, deklarujemy ją jako globalną.

W poniższym przykładzie 1 zadeklarowaliśmy zmienną Str, która znajduje się poza funkcją. Wywoływana jest funkcja demo, która wypisuje wartość zmiennej Str. Aby użyć zmiennej globalnej wewnątrz funkcji, nie trzeba używać słowa kluczowego global.

Przykład 1:

Kod:

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

Wynik:

W poniższym przykładzie 2 Próbowaliśmy zmienić wartość zmiennej globalnej Str wewnątrz funkcji, dlatego zgłosiła wyjątek. Jeśli zmodyfikujemy lub przypiszemy nową wartość do zmiennej wewnątrz funkcji, musimy napisać globalnie. Jeśli chcesz powiedzieć interpreterowi Pythona, że ​​chcesz użyć zmiennej globalnej, wówczas używane jest słowo kluczowe „global”. Jeśli nie został zadeklarowany jako globalny, Python traktuje tę zmienną jako lokalną, jeśli jest tworzona lub modyfikowana wewnątrz funkcji. W tym pierwszym wierszu zgłaszany jest wyjątek, ponieważ python zakłada, że ​​chcemy przypisania jako zmiennej lokalnej ze względu na przypisanie do str wewnątrz funkcji demo ().

Przykład 2:

Kod:

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

Wynik:

Kiedy chcemy zmienić wartość zmiennej globalnej wewnątrz funkcji, używane jest globalne słowo kluczowe.

Poniższy przykład 3 rozwiązał problem napotkany powyżej.

Przykład 3:

Kod:

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

Wynik:

3. Zakres nielokalny lub obejmujący

Zmienna nielokalna jest zmienną zdefiniowaną w funkcji zagnieżdżonej. Oznacza to, że zmienna nie może być w zasięgu lokalnym ani globalnym. Aby utworzyć zmienną nielokalną, używane jest słowo nielokalne. W poniższym kodzie stworzyliśmy funkcję zewnętrzną i istnieje funkcja zagnieżdżona inner (). W zakresie funkcji zewnętrznej () zdefiniowano funkcję wewnętrzną (). Jeśli zmienimy zmienną nielokalną zdefiniowaną w funkcji inner (), zmiany zostaną odzwierciedlone również w funkcji zewnętrznej.

Przykład 1:

Kod:

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

Wynik:

Jeśli chcemy po prostu użyć wartości funkcji zewnętrznej i nie chcemy wprowadzać żadnych zmian, to należy wpisać komentarz (nielokalny a).

Przykład 2:

Kod:

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

Wynik:

4. Wbudowany zakres

Jeśli zmienna nie jest zdefiniowana w zasięgu lokalnym, zamkniętym lub globalnym, python szuka jej we wbudowanym zakresie. W poniższym przykładzie 1 z modułu matematycznego pi jest importowany, a wartość pi nie jest zdefiniowana jako globalna, lokalna i zamknięta. Python następnie szuka wartości pi we wbudowanym zakresie i wypisuje wartość. Dlatego nazwa, która jest już obecna we wbudowanym zakresie, nie powinna być używana jako identyfikator.

Przykład 1:

Kod:

# 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()

Wynik:

Wniosek - zakres w języku Python

W tym artykule dowiedzieliśmy się o zakresie zmiennej python. Nauczyliśmy się czterech rodzajów zakresu - zasięgu globalnego, zasięgu lokalnego, zakresu zamkniętego i zakresu wbudowanego. Dowiedzieliśmy się również, kiedy używać globalnych i nielokalnych słów kluczowych. Mam nadzieję, że zrozumiałeś tę koncepcję.

Polecany artykuł

Jest to przewodnik po zakresie w Pythonie. Tutaj omawiamy typy zakresu w Pythonie i jego przykłady wraz z implementacją i wyjściem kodu. Możesz również przejrzeć nasze inne powiązane artykuły, aby dowiedzieć się więcej -

  1. Krotki w Python z typami
  2. Omówienie enkapsulacji w Pythonie
  3. Python Alternatywy | Top 6
  4. Wprowadzenie do dziedziczenia w Pythonie