Introduksjon til Scope in Python

Scope definerer tilgjengeligheten til python-objektet. For å få tilgang til den spesifikke variabelen i koden, må omfanget defineres fordi det ikke kan nås fra hvor som helst i programmet. Det bestemte kodingsområdet der variabler er synlige, er kjent som omfang. Variabler er ikke synlige for hele koden, og synligheten av den kan begrenses. Omfang verifiserer hvilken variabel som kan sees. Scope definerer settet med regler som forteller oss hvordan og hvor en variabel kan søkes. Variabelen søkes enten for å hente en verdi eller for å tilordne verdi. Navneområde er den unike identifikasjonen av variabelen eller metoden. Navneområde forteller pytontolkeren om navnet på objektet og stedet der det prøver å få tilgang til det.

Navnetomtene søkes etter omfangsoppløsning i henhold til LEGB-regelen. LEGB står for: L: Lokal, E: Lukket, G: Global, B: Innebygd. Sekvensen til LEGB er viktig. Variabelen søkes først i Local, etterfulgt av Enclosed, deretter global og til slutt innebygd.

Typer av omfang i Python

La oss studere hvordan deklarere en variabel og hvordan du får tilgang til omfanget:

1. Lokalt omfang

Variablene som er definert i funksjonen er et lokalt omfang av variabelen. Disse variablene er definert i funksjonsorganet. La oss forstå dette konseptet ved hjelp av et eksempel. I dette eksempelet 1 har vi tatt en variabel num. Num = 0 er definert utenfor funksjonen, så det er ikke en lokal variabel. I henhold til vår definisjon er variablene som er deklarert inne i funksjonsorganet en lokal variabel. Her er num = 1 en lokal variabel som er deklarert og skrevet ut i funksjonsdemoen. Hvis vi kjører denne koden, blir utdataene gitt nedenfor.

Eksempel 1:

Kode:

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

Produksjon:

Num er lokal for funksjonen. Når vi bruker num variabel verdi i funksjonen før vi erklærer den lokalt, reiser det en feil.

Se eksempel 2: Her reiser første uttalelse en pythonfeil da vi prøver å få tilgang 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()

Produksjon:

2. Globalt omfang

Variabelen som kan leses hvor som helst i programmet er kjent som et globalt omfang. Disse variablene er tilgjengelige i og utenfor funksjonen. Når vi ønsker å bruke den samme variabelen i resten av programmet, erklærer vi den som global.

I det følgende eksempel 1 har vi erklært en variabel Str som er utenfor funksjonen. Funksjonsdemoen heter og den skriver ut verdien til variabelen Str. For å bruke en global variabel i en funksjon er det ikke nødvendig å bruke det globale søkeordet.

Eksempel 1:

Kode:

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

Produksjon:

I det følgende eksempel, 2 Vi prøvde å endre verdien av den globale variabelen Str inne i funksjonen, det er grunnen til at det ga et unntak. Hvis vi modifiserer eller tildeler en ny verdi til variabelen inne i funksjonen, må vi skrive global. Hvis du vil fortelle en python-tolk at du vil ønske å bruke en global variabel, brukes nøkkelordet “global”. Hvis den ikke er blitt erklært som global, behandler python den variabelen som lokal hvis den er opprettet eller modifisert i funksjonen. I denne første linjen kaster et unntak fordi python antar at vi ønsker tildeling som en lokal variabel på grunn av tildeling til str inne i funksjonsdemo ().

Eksempel 2:

Kode:

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

Produksjon:

Når vi ønsker å endre verdien på den globale variabelen i funksjonen, brukes det globale søkeordet.

Følgende eksempel 3 løste problemet som oppstår 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)

Produksjon:

3. NonLocal eller Enclosing Omfang

Ikke-lokal variabel er variabelen som er definert i den nestede funksjonen. Det betyr at variabelen verken kan være i det lokale omfanget eller i det globale omfanget. For å lage et ikke-lokalt variabelt brukes ikke-lokale søkeord. I den følgende koden opprettet vi en ytre funksjon og det er en nestet funksjon indre (). I omfanget av ytre () -funksjon er indre () -funksjon definert. Hvis vi endrer den ikke-lokale variabelen slik den er definert i den indre () -funksjonen, reflekteres endringer også i den ytre funksjonen.

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

Produksjon:

Hvis vi bare vil bruke verdien til den ytre funksjonen og ikke ønsker å gjøre noen endringer, 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()

Produksjon:

4. Innebygd omfang

Hvis en variabel ikke er definert i lokalt, lukket eller globalt omfang, leter python etter den i det innebygde omfanget. I det følgende eksempel importeres 1 fra matematikkmodul pi, og verdien av pi er ikke definert i global, lokal og lukket. Python ser deretter etter pi-verdien i det innebygde omfanget og skriver ut verdien. Derfor bør navnet som allerede er til stede i det innebygde omfanget ikke brukes 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()

Produksjon:

Konklusjon - Omfang i Python

I denne artikkelen lærte vi om pythonvariabelen. Vi lærte fire typer omfang - globalt omfang, lokalt omfang, lukket omfang og innebygd omfang. Vi lærte også når vi skal bruke globale og ikke-lokale søkeord. Jeg håper du forsto dette konseptet.

Anbefalt artikkel

Dette er en guide til Scope in Python. Her diskuterer vi typer Scope i Python og dens eksempler sammen med Code Implementation and Output. Du kan også gå gjennom andre relaterte artikler for å lære mer -

  1. Tuples i Python med typer
  2. Oversikt over innkapsling i Python
  3. Python-alternativer | Topp 6
  4. Introduksjon til arv i Python