Jak używać zmiennych globalnych w Pythonie (globalne słowo kluczowe)

Dowiedz się, jak działają zmienne globalne w Pythonie. Zrozumienie zakresu zmiennych, lokalnych i globalnych przestrzeni nazw oraz sposobu modyfikowania zmiennych za pomocą słowa kluczowego global.

Wypróbuj to rozwiązanie w Edytorze

Przegląd

Zrozumienie przestrzeni nazw i zakresu zmiennych ma kluczowe znaczenie dla pisania wolnego od błędów oprogramowania w Pythonie. Zasięg określa, które części programu mogą uzyskać dostęp do zmiennej lub ją modyfikować. Zmienna zadeklarowana poza wszystkimi funkcjami istnieje w zasięgu globalnym i można ją odczytać w dowolnym miejscu modułu.

Jednakże problem pojawia się, gdy funkcja próbuje zmodyfikować (ponownie przypisać) zmienną globalną. Domyślnie, gdy Python widzi przypisanie wewnątrz funkcji, zakłada, że ​​zmienna jest lokalna w stosunku do funkcji. Jeśli spróbujesz zmodyfikować zmienną globalną bez zadeklarowania jej jako globalnej, Python utworzy zmienną lokalną o tej samej nazwie, pozostawiając zmienną globalną bez zmian (lub zgłosi błąd „UnboundLocalError”).

Aby wyraźnie poinformować Pythona, że chcesz zmodyfikować zmienną w globalnej przestrzeni nazw, zamiast tworzyć lokalną, musisz ją zadeklarować, używając słowa kluczowego `global` wewnątrz funkcji. Chociaż używanie zmiennych globalnych jest czasami konieczne, ogólnie uważa się je za złą praktykę w projektowaniu dużych programów, ponieważ utrudnia śledzenie i debugowanie stanu.

Dane wyjściowe kodu i wykonania

Ten skrypt demonstruje odczytywanie zmiennych globalnych, pułapkę przesłaniania zmiennych i modyfikowanie zmiennych globalnych za pomocą słowa kluczowego global.

global_variables.py
Spróbuj w Edytorze
counter = 10 # Global variable

def read_counter():
    # Reading a global variable works out-of-the-box
    print("Reading global counter:", counter)

def shadow_counter():
    # Attempting to assign without 'global' creates a local variable
    counter = 20 # Shadowing
    print("Inside shadow function:", counter)

def modify_counter():
    global counter # Declaring we are writing to global scope
    counter = 50
    print("Inside modify function:", counter)

read_counter()
shadow_counter()
print("Counter after shadow function:", counter) # Remains 10

modify_counter()
print("Counter after modify function:", counter) # Now 50
Wyjście terminala
Reading global counter: 10
Inside shadow function: 20
Counter after shadow function: 10
Inside modify function: 50
Counter after modify function: 50

Wdrażanie krok po kroku

  • Deklaruj zmienne, do których należy uzyskać dostęp globalny poza zakresem funkcji.
  • Czytaj zmienne globalne wewnątrz dowolnej funkcji bez dodawania specjalnych deklaracji.
  • Użyj słowa kluczowego global (np. global counter) wewnątrz funkcji, jeśli chcesz zmodyfikować wartość zmiennej globalnej.
  • Ogranicz użycie zmiennych globalnych, aby zapobiec pomyłkom w zakresie i zanieczyszczeniu przestrzeni nazw.

Często zadawane pytania

Co to jest cieniowanie zmiennych w Pythonie?

Shadowing ma miejsce, gdy zmienna zadeklarowana w zasięgu lokalnym (jak funkcja) ma taką samą nazwę jak zmienna w zewnętrznym zasięgu globalnym. Zmienna lokalna maskuje zmienną globalną, czyniąc ją tymczasowo niedostępną w tym zakresie.

Jaka jest różnica między globalnymi i nielokalnymi słowami kluczowymi?

global służy do uzyskiwania dostępu do zmiennych zdefiniowanych w najbardziej zewnętrznym zasięgu modułu. nonlocal jest używany wewnątrz funkcji zagnieżdżonych, aby uzyskać dostęp do zmiennych zdefiniowanych w otaczającym (zewnętrznym) zakresie funkcji.

Powiązane tematy

Polecane zasoby Pythona

Poszerzaj swoją wiedzę dzięki powiązanym interaktywnym samouczkom, ściągawkom i porównaniom kodów.