Treci la conținutul principal

Domeniul de vizibilitate

Locul în care creezi o variabilă decide unde o poți folosi: doar în interiorul acelei regiuni. Această idee se numește domeniu de vizibilitate.


Domeniul local

Când creezi o variabilă în interiorul unei funcții, ea se află în domeniul local al acelei funcții și nu poate fi folosită în altă parte.

Așadar, x din exemplele de mai jos nu poate fi accesat din afara funcției, dar orice funcție definită în interiorul acelei funcții îl poate folosi în continuare.

Exemplu

În interiorul funcției care a creat-o, variabila funcționează normal:

Prompt
Creează o funcție care definește o variabilă locală x=300 și o afișează. Apelează funcția.
Ieșire: program Python complet

Exemplu

O funcție interioară poate citi variabila locală a funcției care o conține:

Prompt
Creează o funcție cu o variabilă locală x=300 și o funcție interioară imbricată care afișează x. Apelează funcția interioară din interiorul funcției exterioare.
Ieșire: program Python complet

Domeniul global

Creează o variabilă în corpul principal al codului tău Python și ea devine o variabilă globală, parte a domeniului global.

Poți ajunge la o variabilă globală din orice domeniu, atât global, cât și local.

Dacă folosești același nume atât în interiorul, cât și în afara unei funcții, obții două variabile separate. Cea din afara funcției se află în domeniul global, iar cea din interior se află în domeniul local.

Exemplu

Creată în afara oricărei funcții, această variabilă este globală, așa că tot codul o poate folosi:

Prompt
Creează o variabilă globală x=300. Afișeaz-o din interiorul unei funcții și din afara ei.
Ieșire: program Python complet

Exemplu

Mai întâi funcția afișează x local, apoi codul principal îl afișează pe cel global:

Prompt
Creează o variabilă globală x=300 și o funcție care setează o variabilă locală x=200. Afișează x în interiorul funcției și în afara ei, pentru a arăta că sunt separate.
Ieșire: program Python complet

Cuvântul cheie global

Ești într-un domeniu local, dar ai nevoie să creezi o variabilă globală? Cuvântul cheie global face exact asta.

El transformă variabila într-una globală.

Ai nevoie de acest cuvânt cheie și atunci când o funcție trebuie să schimbe valoarea unei variabile globale existente.

Exemplu

Datorită lui global, x face parte din domeniul global:

Prompt
Folosește cuvântul cheie global în interiorul unei funcții pentru a crea o variabilă globală x=300. Afișează x în afara funcției.
Ieșire: program Python complet

Exemplu

Declararea variabilei cu global îi permite funcției să-i schimbe valoarea:

Prompt
Creează o variabilă globală x=300. Folosește cuvântul cheie global în interiorul unei funcții pentru a o schimba în 200. Afișează x după apelarea funcției.
Ieșire: program Python complet

Cuvântul cheie nonlocal

Funcțiile imbricate folosesc cuvântul cheie nonlocal ca să lucreze cu variabilele funcției din jurul lor.

Cu el, variabila aparține funcției exterioare.

Exemplu

Din cauza lui nonlocal, x este aici variabila funcției exterioare:

Prompt
Folosește cuvântul cheie nonlocal într-o funcție imbricată pentru a modifica variabila funcției exterioare. Setează x="Jane" în outer, schimb-o în "hello" în inner și returnează x.
Ieșire: program Python complet

Regula LEGB

Ca să caute numele unei variabile, Python aplică regula LEGB și încearcă aceste locuri în ordine:

  1. Local - Funcția care rulează chiar acum
  2. Enclosing (înconjurător) - Funcțiile din jurul ei, de la interior spre exterior
  3. Global - Nivelul superior al modulului
  4. Built-in (încorporat) - Spațiul de nume cu numele încorporate în Python

Exemplu

Regula LEGB în acțiune:

Prompt
Demonstrează regula LEGB cu funcții imbricate. Setează x la "global", "enclosing" și "local" pe fiecare nivel și afișează-le.
Ieșire: program Python complet