Inleiding tot Scope in Python

Scope definieert de toegankelijkheid van het python-object. Om toegang te krijgen tot de specifieke variabele in de code moet het bereik worden gedefinieerd, omdat deze niet overal in het programma toegankelijk is. Het specifieke coderingsgebied waar variabelen zichtbaar zijn, wordt scope genoemd. Variabelen zijn niet zichtbaar voor de gehele code, de zichtbaarheid ervan kan worden beperkt. Scope verifieert welke variabele kan worden 'gezien'. Scope definieert de set regels die ons vertellen hoe en waar een variabele kan worden doorzocht. De variabele wordt gezocht om een ​​waarde op te halen of om een ​​waarde toe te wijzen. Naamruimte is de unieke identificatie van de variabele of de methode. Namespace vertelt de python-interpreter over de naam van het object en de locatie vanwaar het probeert toegang te krijgen.

De naamruimten worden gezocht naar bereikresolutie volgens de LEGB-regel. De LEGB staat voor: L: Lokaal, E: Ingesloten, G: Globaal, B: Ingebouwd. De volgorde van LEGB is belangrijk. De variabele wordt eerst gezocht in Lokaal, gevolgd door Ingesloten, vervolgens globaal en uiteindelijk ingebouwd.

Soorten scope in Python

Laten we eens kijken hoe een variabele te declareren en hoe toegang te krijgen tot het bereik:

1. Lokale reikwijdte

De variabelen die in de functie zijn gedefinieerd, zijn een lokaal bereik van de variabele. Deze variabelen worden gedefinieerd in de hoofdtekst. Laten we dit concept begrijpen aan de hand van een voorbeeld. In dit voorbeeld 1 hebben we één variabel getal genomen. Num = 0 wordt buiten de functie gedefinieerd, dus het is geen lokale variabele. Volgens onze definitie zijn de variabelen die binnen het functielichaam worden gedeclareerd een lokale variabele. Hier is num = 1 een lokale variabele die wordt gedeclareerd en afgedrukt in de functiedemo. Als we deze code uitvoeren, wordt de uitvoer hieronder gegeven.

Voorbeeld 1:

Code:

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

Output:

Num is lokaal voor de functie. Wanneer we de waarde van de variabele num in de functie gebruiken voordat we deze lokaal declareren, geeft dit een foutmelding.

Referentievoorbeeld 2: hier roept de eerste afdrukinstructie een pythonfout op, omdat we proberen deze te openen vóór de toewijzing.

Voorbeeld 2:

Code:

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

Output:

2. Wereldwijde reikwijdte

De variabele die overal in het programma kan worden gelezen, staat bekend als een wereldwijd bereik. Deze variabelen zijn toegankelijk binnen en buiten de functie. Wanneer we dezelfde variabele in de rest van het programma willen gebruiken, verklaren we deze als globaal.

In het volgende voorbeeld 1 hebben we een variabele Str gedeclareerd die buiten de functie valt. De functiedemo wordt opgeroepen en deze drukt de waarde van variabele Str af. Om een ​​globale variabele binnen een functie te gebruiken, is het niet nodig om het globale sleutelwoord te gebruiken.

Voorbeeld 1:

Code:

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

Output:

In het volgende voorbeeld, 2 probeerden we de waarde van globale variabele Str binnen de functie te veranderen, daarom is er een uitzondering opgetreden. Als we de variabele binnen de functie wijzigen of een nieuwe waarde toewijzen, moeten we globaal schrijven. Als u een python-interpreter wilt vertellen dat u een globale variabele wilt gebruiken, wordt het trefwoord 'globaal' gebruikt. Als het niet als algemeen is gedeclareerd, behandelt python die variabele als lokaal als deze binnen de functie wordt gemaakt of gewijzigd. In deze eerste regel wordt een uitzondering gegenereerd omdat python veronderstelt dat we toewijzing als een lokale variabele vanwege toewijzing willen str binnen de functiedemo ().

Voorbeeld 2:

Code:

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

Output:

Wanneer we de waarde van de globale variabele binnen de functie globaal sleutelwoord willen veranderen, wordt gebruikt.

Het volgende voorbeeld 3 loste het probleem op dat hierboven wordt aangetroffen.

Voorbeeld 3:

Code:

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

Output:

3. Niet-lokale of omsluitende scope

Niet-lokale variabele is de variabele die is gedefinieerd in de geneste functie. Dit betekent dat de variabele zich niet in het lokale bereik of in het globale bereik kan bevinden. Om een ​​niet-lokale variabele te maken, wordt een niet-lokaal trefwoord gebruikt. In de volgende code hebben we een externe functie gemaakt en is er een geneste functie innerlijke (). In het bereik van de functie outer () wordt de functie inner () gedefinieerd. Als we de niet-lokale variabele wijzigen zoals deze is gedefinieerd in de functie inner (), worden wijzigingen ook weerspiegeld in de externe functie.

Voorbeeld 1:

Code:

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

Output:

Als we alleen de waarde van de buitenste functie willen gebruiken en geen wijzigingen willen aanbrengen, geef dan commentaar (niet-lokale a) regel.

Voorbeeld 2:

Code:

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

Output:

4. Ingebouwde scope

Als een variabele niet is gedefinieerd in lokaal, ingesloten of globaal bereik, zoekt python ernaar in het ingebouwde bereik. In het volgende voorbeeld wordt 1 uit wiskundemodule pi geïmporteerd en wordt de waarde van pi niet gedefinieerd in globaal, lokaal en ingesloten. Python zoekt vervolgens naar de pi-waarde in de ingebouwde scope en drukt de waarde af. Daarom moet de naam die al in het ingebouwde bereik aanwezig is, niet als identificatie worden gebruikt.

Voorbeeld 1:

Code:

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

Output:

Conclusie - Scope in Python

In dit artikel hebben we kennis gemaakt met het bereik van de variabele python. We hebben vier soorten scoop geleerd: globale scoop, lokale scoop, ingesloten scoop en ingebouwde scoop. We hebben ook geleerd wanneer we algemene en niet-lokale zoekwoorden moeten gebruiken. Ik hoop dat je dit concept hebt begrepen.

Aanbevolen artikel

Dit is een gids voor Scope in Python. Hier bespreken we soorten Scope in Python en zijn voorbeelden, samen met de implementatie en uitvoer van code. U kunt ook onze andere gerelateerde artikelen doornemen voor meer informatie -

  1. Tuples in Python met typen
  2. Overzicht van inkapseling in Python
  3. Alternatieven voor Python | Top 6
  4. Inleiding tot erfenis in Python