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.
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.
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 50Reading global counter: 10
Inside shadow function: 20
Counter after shadow function: 10
Inside modify function: 50
Counter after modify function: 50Wdraż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
Dowiedz się, jak obsługiwać wyjątki w Pythonie za pomocą bloków try, z wyjątkiem, else i wreszcie. Napisz bezbłędny i odporny na awarie kod w Pythonie.
Jak utworzyć klasę w PythonieDowiedz się, jak utworzyć klasę w Pythonie. Opanuj konstruktora __init__, metody instancji, słowo kluczowe self i tworzenie instancji obiektów.
Polecane zasoby Pythona
Poszerzaj swoją wiedzę dzięki powiązanym interaktywnym samouczkom, ściągawkom i porównaniom kodów.
Wyjaśnienie zmiennych i typów danych w Pythonie
Zrozumienie zmiennych Pythona i podstawowych typów danych (łańcuchy, liczby całkowite, zmiennoprzecinkowe, wartości logiczne). Kompletny przewodnik dla początkujących dotyczący przydzielania pamięci w Pythonie.
Ściągawka dotycząca metod ciągów w Pythonie
Kompletny przewodnik dotyczący manipulacji ciągami znaków w języku Python. Opanuj formatowanie, wyszukiwanie, dzielenie, zastępowanie i sprawdzanie właściwości ciągów.
Python kontra JavaScript: który język programowania jest najlepszy?
Kompleksowe porównanie Pythona i JavaScript. Poznaj różnice w składni, wydajność, przypadki użycia (backend vs frontend) i przykłady kodowania.