Uvod u opseg Pythona

Opseg definira dostupnost objekta python. Za pristup određenoj varijabli u kodu mora se definirati opseg jer se njemu ne može pristupiti nigdje u programu. Posebno područje kodiranja u kojem su vidljive varijable poznato je i kao područje primjene. Varijable nisu vidljive za cijeli kod, njegova vidljivost može biti ograničena. Djelokrug potvrđuje koja varijabla može biti "Seen". Opseg definira skup pravila koja nam govore kako i gdje se može pretraživati ​​varijablu. Traži se varijabla ili za dobivanje vrijednosti ili za dodjeljivanje vrijednosti. Namespace je jedinstvena identifikacija varijable ili metode. Imenski prostor govori tumaču pythona o imenu objekta i lokaciji odakle pokušava pristupiti.

Pretražuju se nazivi prostora za rješavanje opsega prema LEGB pravilu. LEGB znači: L: Lokalno, E: Zatvoreno, G: Global, B: Ugrađeni. Važan je slijed LEGB-a. Promjenjiva se najprije pretražuje u Local, zatim Enclosed, zatim globalno i na kraju ugrađen.

Vrste opsega u Pythonu

Proučimo kako deklarirati varijablu i kako pristupiti njezinu području:

1. Lokalni opseg

Varijable koje su definirane u funkciji su lokalni opseg varijable. Te su varijable definirane u funkcijskom tijelu. Shvatimo ovaj koncept uz pomoć primjera. U ovom primjeru 1 uzeli smo jednu varijablu num. Num = 0 definiran je izvan funkcije, tako da nije lokalna varijabla. Prema našoj definiciji, varijable koje su deklarisane unutar funkcionalnog tijela je lokalna varijabla. Ovdje je num = 1 lokalna varijabla koja je deklarirana i ispisana unutar demo funkcije. Ako pokrenemo ovaj kod, izlaz je dan u nastavku.

Primjer 1:

Kodirati:

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

Izlaz:

Num je lokalni funkciji. Kad u funkciji koristimo vrijednost varijable num prije nego što je lokalno prijavimo, dolazi do pogreške.

Pogledajte primjer 2: Ovdje prva izjava ispisa stvara grešku pythona dok joj pokušavamo pristupiti prije dodjele.

Primjer br. 2:

Kodirati:

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

Izlaz:

2. Globalni opseg

Varijabla koja se može pročitati s bilo kojeg mjesta u programu poznata je kao globalni opseg. Ovim se varijablama može pristupiti unutar i izvan funkcije. Kad istu varijablu želimo upotrijebiti u ostatku programa, proglašavamo je globalnom.

U sljedećem primjeru 1 deklarirali smo varijablu Str koja je izvan funkcije. Demonstrira se funkcija funkcije i ona ispisuje vrijednost varijable Str. Za korištenje globalne varijable unutar funkcije nema potrebe koristiti globalnu ključnu riječ.

Primjer 1:

Kodirati:

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

Izlaz:

U sljedećem primjeru 2 Pokušali smo promijeniti vrijednost globalne varijable Str unutar funkcije, zbog čega je stvorio iznimku. Ako izmijenimo ili dodijelimo novu vrijednost varijabli unutar funkcije, tada moramo pisati globalno. Ako prevoditelju pythona želite reći da želite koristiti globalnu varijablu, tada se koristi ključna riječ "global". Ako nije proglašena globalnom, python tu varijablu tretira kao lokalnu ako je stvoren ili promijenjen unutar funkcije. U ovom prvom retku barata se iznimkom jer python pretpostavlja da želimo dodjeljivanje kao lokalnu varijablu zbog dodjele str str demo funkcije ().

Primjer br. 2:

Kodirati:

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

Izlaz:

Kad želimo promijeniti vrijednost globalne varijable unutar funkcije koristi se globalna ključna riječ.

Sljedeći je primjer 3 riješio problem s kojim se susreće gore.

Primjer 3:

Kodirati:

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

Izlaz:

3. Nerekalni ili ograđujući opseg

Nelokalna varijabla je varijabla koja je definirana u ugniježđenoj funkciji. To znači da varijabla ne može biti ni u lokalnom ni u globalnom opsegu. Za stvaranje nekalne varijable koristi se nelokalna ključna riječ. U sljedećem kôdu stvorili smo vanjsku funkciju i tu je ugniježđena funkcija unutar (). U opsegu vanjske () funkcije definirana je unutarnja () funkcija. Ako promijenimo nelokalnu varijablu onako kako je definirano u unutarnjoj () funkciji, tada se promjene odražavaju i na vanjskoj funkciji.

Primjer 1:

Kodirati:

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

Izlaz:

Ako samo želimo upotrijebiti vrijednost vanjske funkcije, a ne želimo vršiti nikakve promjene, tada komentiramo (nelokalni a) redak.

Primjer br. 2:

Kodirati:

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

Izlaz:

4. Ugrađeni opseg

Ako varijabla nije definirana u lokalnom, ograđenom ili globalnom opsegu, onda ju python traži u ugrađenom području. U sljedećem primjeru uvozi se 1 iz matematičkog modula pi, a vrijednost pi nije definirana u globalnom, lokalnom i priloženom obliku. Zatim Python traži pi vrijednost u ugrađenom području i ispisuje vrijednost. Stoga se ime koje je već prisutno u ugrađenom području ne bi trebalo koristiti kao identifikator.

Primjer 1:

Kodirati:

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

Izlaz:

Zaključak - Opseg Pythona

U ovom smo članku saznali o opsegu varijable python. Naučili smo četiri vrste opsega - globalni opseg, lokalni opseg, zatvoreni opseg i ugrađeni opseg. Također smo naučili kada koristiti globalne i nelokalne ključne riječi. Nadam se da ste razumjeli ovaj koncept.

Preporučeni članak

Ovo je vodič za Opseg u Pythonu. Ovdje smo raspravljali o vrstama opsega u Pythonu i njegovim primjerima, zajedno s implementacijom i izlazom koda. Možete i pregledati naše druge povezane članke da biste saznali više -

  1. Tuple u Pythonu s vrstama
  2. Pregled enkapsulacije u Pythonu
  3. Python Alternative | Top 6
  4. Uvod u nasljeđivanje Pythona

Kategorija: