Introduktion til Scope in Python

Scope definerer tilgængeligheden af ​​python-objektet. For at få adgang til den bestemte variabel i koden skal rækkevidden defineres, da den ikke kan fås adgang til hvor som helst i programmet. Den særlige kodningsregion, hvor variabler er synlige, kaldes omfang. Variabler er ikke synlige for hele koden, og dens synlighed kan begrænses. Omfang bekræfter, hvilken variabel der kan 'ses'. Scope definerer det sæt regler, der fortæller os, hvordan og hvor en variabel kan søges. Variablen søges enten for at hente en værdi eller for at tildele værdi. Navneområde er den unikke identifikation af variablen eller metoden. Navneområde fortæller python-fortolkeren om navnet på objektet og det sted, hvorfra det prøver at få adgang til det.

Navnrummene søges efter rækkeviddeopløsning i henhold til LEGB-reglen. LEGB står for: L: Lokal, E: lukket, G: global, B: indbygget. Sekvensen af ​​LEGB er vigtig. Variablen søges først i Local, efterfulgt af Enclosed, derefter global og endelig indbygget.

Typer af anvendelsesområde i Python

Lad os studere, hvordan man erklærer en variabel, og hvordan man får adgang til dens rækkevidde:

1. Lokalt anvendelsesområde

Variablerne, der er defineret i funktionen, er et lokalt omfang af variablen. Disse variabler er defineret i funktionskroppen. Lad os forstå dette koncept ved hjælp af et eksempel. I dette eksempel 1 har vi taget en variabel num. Num = 0 er defineret uden for funktionen, så det ikke er en lokal variabel. I henhold til vores definition er de variabler, der er erklæret inde i funktionskroppen, en lokal variabel. Her er num = 1 en lokal variabel, der deklareres og udskrives i funktionsdemo. Hvis vi kører denne kode, gives output nedenfor.

Eksempel 1:

Kode:

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

Produktion:

Num er lokal for funktionen. Når vi bruger num variabel værdi i funktionen, inden vi erklærer den lokalt, rejser det en fejl.

Se eksempel 2: Her rejser den første udskrivning en pythonfejl, da vi forsøger at få adgang til den før tildelingen.

Eksempel 2:

Kode:

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

Produktion:

2. Globalt anvendelsesområde

Variablen, der kan læses hvor som helst i programmet, er kendt som et globalt omfang. Disse variabler kan fås i og uden for funktionen. Når vi ønsker at bruge den samme variabel i resten af ​​programmet, erklærer vi den som global.

I det følgende eksempel 1 har vi erklæret en variabel Str, der er uden for funktionen. Funktionsdemo kaldes, og den udskriver værdien af ​​variabel Str. For at bruge en global variabel inde i en funktion er det ikke nødvendigt at bruge det globale nøgleord.

Eksempel 1:

Kode:

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

Produktion:

I det følgende eksempel, 2 Vi forsøgte at ændre værdien af ​​den globale variabel Str inde i funktionen, det er grunden til, at det rejste en undtagelse. Hvis vi ændrer eller tildeler en ny værdi til variablen inde i funktionen, skal vi skrive global. Hvis du vil fortælle en python-tolk, at du ønsker at bruge en global variabel, bruges nøgleordet “global”. Hvis det ikke er blevet erklæret som globalt, behandler python den variabel som lokal, hvis den oprettes eller ændres i funktionen. I denne første linje kaster en undtagelse, fordi python antager, at vi ønsker tildeling som en lokal variabel på grund af tildeling til str inden i funktionsdemo ().

Eksempel 2:

Kode:

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

Produktion:

Når vi ønsker at ændre værdien af ​​den globale variabel i funktionen, anvendes det globale nøgleord.

Følgende eksempel 3 løste problemet, der er stødt ovenfor.

Eksempel 3:

Kode:

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

Produktion:

3. Ikke-lokalt eller lukkende anvendelsesområde

Ikke-lokal variabel er den variabel, der er defineret i den indlejrede funktion. Det betyder, at variablen hverken kan være i det lokale omfang eller i det globale omfang. For at oprette et ikke-lokalt variabelt bruges ikke-lokal nøgleord. I den følgende kode oprettede vi en ydre funktion, og der er en indlejret funktion indvendig (). I omfanget af ydre () -funktion defineres indre () -funktion. Hvis vi ændrer den ikke-lokale variabel, som den er defineret i den indre () -funktion, afspejles ændringer også i den ydre funktion.

Eksempel 1:

Kode:

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

Produktion:

Hvis vi bare ønsker at bruge værdien af ​​den ydre funktion og ikke ønsker at foretage nogen ændringer, så kommenter (ikke-lokal a) linje.

Eksempel 2:

Kode:

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

Produktion:

4. Indbygget anvendelsesområde

Hvis en variabel ikke er defineret i lokalt, lukket eller globalt omfang, ser python efter den i det indbyggede omfang. I det følgende eksempel importeres 1 fra matemodul pi, og værdien af ​​pi er ikke defineret i globalt, lokalt og lukket. Python kigger derefter efter pi-værdien i det indbyggede omfang og udskriver værdien. Derfor skal navnet, der allerede findes i det indbyggede omfang, ikke bruges som en identifikator.

Eksempel 1:

Kode:

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

Produktion:

Konklusion - Omfang i Python

I denne artikel lærte vi om pythonvariablen. Vi lærte fire typer omfang - globalt omfang, lokalt omfang, lukket omfang og indbygget omfang. Vi lærte også, hvornår vi skal bruge globale og ikke-lokale nøgleord. Jeg håber, du forstod dette koncept.

Anbefalet artikel

Dette er en guide til Scope in Python. Her diskuterer vi anvendelsesområder i Python og dens eksempler sammen med kodeimplementering og output. Du kan også gennemgå vores andre relaterede artikler for at lære mere -

  1. Tuples i Python med typer
  2. Oversigt over indkapsling i Python
  3. Python-alternativer | Top 6
  4. Introduktion til arv i Python

Kategori: