Introduzione a Scope in Python

Scope definisce l'accessibilità dell'oggetto python. Per accedere alla particolare variabile nel codice, l'ambito deve essere definito in quanto non è possibile accedervi da nessuna parte del programma. La particolare regione di codifica in cui sono visibili le variabili è nota come ambito. Le variabili non sono visibili all'intero codice e la sua visibilità può essere limitata. Scope verifica quale variabile può essere "Vista". Scope definisce l'insieme di regole che ci dicono come e dove è possibile cercare una variabile. La variabile viene cercata per recuperare un valore o per assegnare un valore. Lo spazio dei nomi è l'identificazione univoca della variabile o del metodo. Namespace comunica all'interprete Python il nome dell'oggetto e la posizione da cui sta tentando di accedervi.

Gli spazi dei nomi vengono cercati per la risoluzione dell'ambito in base alla regola LEGB. LEGB significa: L: locale, E: chiuso, G: globale, B: incorporato. La sequenza di LEGB è importante. La variabile viene prima cercata in Local, seguita da Enclosed, quindi globale e infine integrata.

Tipi di ambito in Python

Studiamo come dichiarare una variabile e come accedere al suo ambito:

1. Ambito locale

Le variabili definite nella funzione sono un ambito locale della variabile. Queste variabili sono definite nel corpo della funzione. Comprendiamo questo concetto con l'aiuto di un esempio. In questo esempio 1, abbiamo preso una variabile num. Num = 0 è definito all'esterno della funzione, quindi non è una variabile locale. Secondo la nostra definizione, le variabili dichiarate all'interno del corpo della funzione sono variabili locali. Qui num = 1 è una variabile locale dichiarata e stampata nella demo della funzione. Se eseguiamo questo codice, l'output è indicato di seguito.

Esempio 1:

Codice:

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

Produzione:

Num è locale per la funzione. Quando utilizziamo il valore della variabile num nella funzione prima di dichiararla localmente, viene generato un errore.

Consultare l'esempio 2: qui la prima istruzione di stampa genera un errore Python mentre stiamo provando ad accedervi prima dell'assegnazione.

Esempio n. 2:

Codice:

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

Produzione:

2. Ambito globale

La variabile che può essere letta da qualsiasi parte del programma è nota come ambito globale. È possibile accedere a queste variabili all'interno e all'esterno della funzione. Quando vogliamo usare la stessa variabile nel resto del programma, la dichiariamo globale.

Nel seguente esempio 1, abbiamo dichiarato una variabile Str che è al di fuori della funzione. Viene chiamata la funzione demo e stampa il valore della variabile Str. Per utilizzare una variabile globale all'interno di una funzione non è necessario utilizzare la parola chiave globale.

Esempio 1:

Codice:

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

Produzione:

Nell'esempio seguente, 2 Abbiamo cercato di modificare il valore della variabile globale Str all'interno della funzione, motivo per cui ha sollevato un'eccezione. Se modifichiamo o assegniamo un nuovo valore alla variabile all'interno della funzione, allora dobbiamo scrivere globale. Se vuoi dire a un interprete Python che vuoi usare una variabile globale, allora viene usata la parola chiave "globale". Se non è stato dichiarato globale, Python considera quella variabile come locale se viene creata o modificata all'interno della funzione. In questa prima riga viene generata un'eccezione perché python presuppone che vogliamo l'assegnazione come variabile locale a causa dell'assegnazione a str all'interno della funzione demo ().

Esempio n. 2:

Codice:

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

Produzione:

Quando vogliamo cambiare il valore della variabile globale all'interno della funzione viene utilizzata la parola chiave globale.

Il seguente esempio 3 ha risolto il problema riscontrato in precedenza.

Esempio n. 3:

Codice:

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

Produzione:

3. Ambito non locale o di inclusione

La variabile nonlocale è la variabile definita nella funzione nidificata. Significa che la variabile non può essere né nell'ambito locale né nell'ambito globale. Per creare una variabile nonlocale viene utilizzata una parola chiave nonlocal. Nel codice seguente, abbiamo creato una funzione esterna e c'è una funzione nidificata inner (). Nell'ambito della funzione external () la funzione inner () è definita. Se cambiamo la variabile non locale come è definita nella funzione inner (), anche i cambiamenti si riflettono nella funzione esterna.

Esempio 1:

Codice:

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

Produzione:

Se vogliamo solo usare il valore della funzione esterna e non vogliamo apportare modifiche, commentate la riga (non locale a).

Esempio n. 2:

Codice:

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

Produzione:

4. Ambito integrato

Se una variabile non è definita nell'ambito locale, chiuso o globale, Python la cerca nell'ambito incorporato. Nell'esempio seguente, 1 dal modulo matematico pi viene importato e il valore di pi non è definito in globale, locale e racchiuso. Python quindi cerca il valore pi nell'ambito incorporato e stampa il valore. Quindi il nome che è già presente nell'ambito incorporato non deve essere usato come identificatore.

Esempio 1:

Codice:

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

Produzione:

Conclusione - Scope in Python

In questo articolo, abbiamo appreso l'ambito della variabile python. Abbiamo imparato quattro tipi di ambito: ambito globale, ambito locale, ambito chiuso e ambito incorporato. Abbiamo anche imparato quando usare parole chiave globali e non locali. Spero tu abbia capito questo concetto.

Articolo raccomandato

Questa è una guida a Scope in Python. Qui discutiamo i tipi di ambito in Python e i suoi esempi insieme all'implementazione e all'output del codice. Puoi anche consultare i nostri altri articoli correlati per saperne di più -

  1. Tuple in Python con Tipi
  2. Panoramica dell'incapsulamento in Python
  3. Alternative a Python | Top 6
  4. Introduzione all'ereditarietà in Python

Categoria: