Zasięg zmiennych w Python

Zmienne są dostępne tylko w obszarze ich utworzenia. To nazywa się zakresem.

Lokalny zakres

Zmienne utworzone wewnątrz funkcji należą do lokalnego zakresu tej funkcji i mogą być używane tylko wewnątrz niej.

Przykład

Zmienne utworzone wewnątrz funkcji są dostępne tylko wewnątrz tej funkcji:

def myfunc():
  x = 100
  print(x)
myfunc()

Uruchom przykład

Funkcja wewnątrz funkcji

Jak w przykładzie powyżej, zmienna x jest niedostępna poza funkcją, ale jest dostępna dla każdej funkcji wewnątrz funkcji:

Przykład

Możliwe jest dostęp do lokalnej zmiennej z funkcji wewnątrz funkcji:

def myfunc():
  x = 100
  def myinnerfunc():
    print(x)
  myinnerfunc()
myfunc()

Uruchom przykład

Zakres globalny

Zmienne utworzone w ciele kodu Pythona są zmiennymi globalnymi, należącymi do globalnego zakresu.

Zmienne globalne są dostępne w każdym zakresie (globalnym i lokalnym).

Przykład

Zmienne utworzone poza funkcją są zmiennymi globalnymi, dostępne dla każdego:

x = 100
def myfunc():
  print(x)
myfunc()
print(x)

Uruchom przykład

Nazywanie zmiennych

Jeśli operujesz na同名 zmiennych wewnątrz i poza funkcją, Python traktuje je jako dwa oddzielne zmienne, jedna dostępna w zakresie globalnym (poza funkcją), a druga w zakresie lokalnym (wewnątrz funkcji):

Przykład

Ta funkcja wyświetli lokalną zmienną x, a następnie kod wyświetli zmienną globalną x:

x = 100
def myfunc():
  x = 200
  print(x)
myfunc()
print(x)

Uruchom przykład

Klucz globalny

Jeśli potrzebujesz utworzyć zmienną globalną, ale utknąłeś w lokalnym zakresie, możesz użyć klucza globalnego.

Klucz globalny czyni zmienną zmienną globalną.

Przykład

Jeśli używasz klucza globalnego, zmienna ta należy do globalnego zakresu:

def myfunc():
  global x
  x = 100
myfunc()
print(x)

Uruchom przykład

Również, aby zmienić zmienną globalną wewnątrz funkcji, użyj klucza globalnego.

Przykład

Aby zmienić wartość zmiennej globalnej wewnątrz funkcji, użyj klucza globalnego do odniesienia się do tej zmiennej:

x = 100
def myfunc():
  global x
  x = 200
myfunc()
print(x)

Uruchom przykład