Introduktion till Scope in Python

Scope definierar tillgängligheten för pythonobjektet. För att få åtkomst till den specifika variabeln i koden måste omfattningen definieras eftersom den inte kan nås var som helst i programmet. Den specifika kodningsregionen där variabler är synliga kallas omfattning. Variabler är inte synliga för hela koden, dess synlighet kan begränsas. Scope verifierar vilken variabel som kan ses. Scope definierar uppsättningen regler som berättar hur och var en variabel kan sökas. Variabeln söks antingen för att hämta ett värde eller för att tilldela värde. Namnområdet är den unika identifieringen av variabeln eller metoden. Namespace berättar pytontolkaren om objektets namn och varifrån det försöker komma åt det.

Namnytorna söks efter omfattningsupplösning enligt LEGB-regeln. LEGB står för: L: Lokal, E: Avsluten, G: Global, B: Inbyggd. Sekvensen för LEGB är viktig. Variabeln söks först i Local, följt av Enclosed, sedan global och slutligen inbyggd.

Typer av omfattning i Python

Låt oss studera hur man deklarerar en variabel och hur man får tillgång till dess omfattning:

1. Lokalt tillämpningsområde

Variablerna som definieras i funktionen är en lokal omfattning av variabeln. Dessa variabler definieras i funktionskroppen. Låt oss förstå det här konceptet med hjälp av ett exempel. I detta exempel 1 har vi tagit en variabel num. Num = 0 definieras utanför funktionen så det är inte en lokal variabel. Enligt vår definition är variablerna som deklareras i funktionskroppen en lokal variabel. Här är num = 1 en lokal variabel som deklareras och skrivs ut i funktionsdemon. Om vi ​​kör denna kod ges utdata nedan.

Exempel 1:

Koda:

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

Produktion:

Num är lokal för funktionen. När vi använder num variabelt värde i funktionen innan det deklareras lokalt ger det ett fel.

Se exempel 2: Här uppställer det första uttalandet ett pythonfel eftersom vi försöker komma åt det före uppdraget.

Exempel 2:

Koda:

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

Produktion:

2. Global räckvidd

Variabeln som kan läsas var som helst i programmet kallas ett globalt omfång. Dessa variabler kan nås inom och utanför funktionen. När vi vill använda samma variabel i resten av programmet förklarar vi den som global.

I följande exempel 1 har vi deklarerat en variabel Str som ligger utanför funktionen. Funktionsdemo kallas och den skriver ut värdet på variabeln Str. För att använda en global variabel i en funktion finns det inget behov av att använda det globala nyckelordet.

Exempel 1:

Koda:

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

Produktion:

I följande exempel, 2 Vi försökte ändra värdet på den globala variabeln Str inuti funktionen det var därför det skapade ett undantag. Om vi ​​modifierar eller tilldelar ett nytt värde till variabeln inuti funktionen måste vi skriva globalt. Om du vill berätta för en python-tolk att du vill använda en global variabel används nyckelordet "global". Om den inte har deklarerats som global behandlar python den variabeln som lokal om den skapas eller modifieras i funktionen. I den här första raden kastar ett undantag eftersom python antar att vi vill tilldela som en lokal variabel på grund av tilldelning till str inne i funktionsdemo ().

Exempel 2:

Koda:

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

Produktion:

När vi vill ändra värdet på den globala variabeln i funktionen används det globala nyckelordet.

Följande exempel 3 löste problemet som stöds ovan.

Exempel 3:

Koda:

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

Produktion:

3. Icke-lokal eller tillslutande omfattning

Nonlocal Variable är den variabel som definieras i den kapslade funktionen. Det betyder att variabeln varken kan vara i det lokala omfånget eller i det globala omfånget. För att skapa ett icke-lokalt variabelt används icke-lokala nyckelord. I följande kod skapade vi en yttre funktion och det finns en kapslad funktion inre (). Inom ramen för yttre () -funktion definieras inre () -funktion. Om vi ​​ändrar den icke-lokala variabeln som den definieras i den inre () -funktionen reflekteras förändringar också i den yttre funktionen.

Exempel 1:

Koda:

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

Produktion:

Om vi ​​bara vill använda värdet på den yttre funktionen och inte vill göra några ändringar, kommentera (icke-lokala a) raden.

Exempel 2:

Koda:

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

Produktion:

4. Inbyggt omfattning

Om en variabel inte definieras i lokalt, avslutat eller globalt omfång letar python efter det i det inbyggda omfånget. I följande exempel importeras 1 från matematikmodul pi och värdet på pi definieras inte i globalt, lokalt och slutet. Python letar sedan efter pi-värdet i det inbyggda omfånget och skriver ut värdet. Därför bör namnet som redan finns i det inbyggda omfånget inte användas som en identifierare.

Exempel 1:

Koda:

# 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:

Slutsats - Räckvidd i Python

I den här artikeln lärde vi oss pythonvariabelns omfattning. Vi lärde oss fyra typer av omfattning - global omfattning, lokalt omfattning, slutet omfattning och inbyggt omfattning. Vi har också lärt oss när vi ska använda globala och icke-lokala nyckelord. Jag hoppas att du förstod det här konceptet.

Rekommenderad artikel

Detta är en guide till Scope in Python. Här diskuterar vi typer av omfattning i Python och dess exempel tillsammans med kodimplementering och utdata. Du kan också gå igenom våra andra relaterade artiklar för att lära dig mer -

  1. Tuples i Python med typer
  2. Översikt över Encapsulation i Python
  3. Pythonalternativ | Topp 6
  4. Introduktion till arv i Python

Kategori: