W tym artykule dowiesz się o globalnym słowie kluczowym, zmiennej globalnej oraz o tym, kiedy używać globalnych słów kluczowych.
Przed przeczytaniem tego artykułu upewnij się, że znasz podstawy zmiennych globalnych, lokalnych i nielokalnych języka Python.
Co to jest słowo kluczowe global
W Pythonie global
słowo kluczowe umożliwia modyfikowanie zmiennej poza bieżącym zakresem. Służy do tworzenia zmiennej globalnej i dokonywania zmian w zmiennej w kontekście lokalnym.
Reguły globalnego słowa kluczowego
Podstawowe zasady dotyczące global
słów kluczowych w Pythonie to:
- Kiedy tworzymy zmienną wewnątrz funkcji, jest ona domyślnie lokalna.
- Kiedy definiujemy zmienną poza funkcją, jest ona domyślnie globalna. Nie musisz używać
global
słowa kluczowego. - Używamy
global
słowa kluczowego do odczytywania i zapisywania zmiennej globalnej wewnątrz funkcji. - Użycie
global
słowa kluczowego poza funkcją nie ma żadnego efektu.
Stosowanie globalnego słowa kluczowego
Weźmy przykład.
Przykład 1: Dostęp do zmiennej globalnej z wnętrza funkcji
c = 1 # global variable def add(): print(c) add()
Kiedy uruchomimy powyższy program, wynik będzie:
1
Jednak możemy mieć pewne scenariusze, w których musimy zmodyfikować zmienną globalną z wnętrza funkcji.
Przykład 2: Modyfikacja zmiennej globalnej z wnętrza funkcji
c = 1 # global variable def add(): c = c + 2 # increment c by 2 print(c) add()
Po uruchomieniu powyższego programu na wyjściu pojawi się błąd:
UnboundLocalError: odwołanie do zmiennej lokalnej „c” przed przypisaniem
Dzieje się tak, ponieważ mamy dostęp tylko do zmiennej globalnej, ale nie możemy jej modyfikować z wnętrza funkcji.
Rozwiązaniem tego problemu jest użycie global
słowa kluczowego.
Przykład 3: Zmiana zmiennej globalnej wewnątrz funkcji przy użyciu funkcji global
c = 0 # global variable def add(): global c c = c + 2 # increment by 2 print("Inside add():", c) add() print("In main:", c)
Kiedy uruchomimy powyższy program, wynik będzie:
Wewnątrz dodaj (): 2 W głównym: 2
W powyższym programie definiujemy c jako globalne słowo kluczowe wewnątrz add()
funkcji.
Następnie zwiększamy zmienną c o 1
, tj c = c + 2
. Następnie wywołujemy add()
funkcję. Na koniec drukujemy zmienną globalną c.
Jak widać, zmiana nastąpiła również w zmiennej globalnej poza funkcją c = 2
.
Zmienne globalne w modułach Pythona
W Pythonie tworzymy pojedynczy moduł config.py
do przechowywania zmiennych globalnych i udostępniania informacji między modułami Pythona w ramach tego samego programu.
Oto jak możemy udostępniać zmienne globalne w modułach Pythona.
Przykład 4: Współdziel globalną zmienną w modułach Pythona
Utwórz config.py
plik do przechowywania zmiennych globalnych
a = 0 b = "empty"
Utwórz update.py
plik, aby zmienić zmienne globalne
import config config.a = 10 config.b = "alphabet"
Utwórz main.py
plik, aby przetestować zmiany wartości
import config import update print(config.a) print(config.b)
Kiedy uruchomimy main.py
plik, wynik będzie
10 alfabetów
W powyższym przykładzie, stworzyliśmy trzy pliki: config.py
, update.py
, i main.py
.
Moduł config.py
przechowuje globalne zmienne a i b. W update.py
pliku importujemy config.py
moduł i modyfikujemy wartości a i b. Podobnie w main.py
pliku importujemy zarówno plik, jak config.py
i update.py
module. Na koniec drukujemy i testujemy wartości zmiennych globalnych, czy zostały zmienione, czy nie.
Globalne w funkcjach zagnieżdżonych
Oto jak możesz użyć zmiennej globalnej w funkcji zagnieżdżonej.
Przykład 5: Używanie zmiennej globalnej w funkcji zagnieżdżonej
def foo(): x = 20 def bar(): global x x = 25 print("Before calling bar: ", x) print("Calling bar now") bar() print("After calling bar: ", x) foo() print("x in main: ", x)
Wynik to:
Przed wywołaniem pasek połączenia: 20 Teraz pasek połączenia Po wywołaniu pasek połączenia: 20 x główny: 25
W powyższym programie zadeklarowaliśmy zmienną globalną wewnątrz zagnieżdżonej funkcji bar()
. Wewnątrz foo()
funkcji x nie ma wpływu na słowo kluczowe global.
Przed i po wywołaniu bar()
zmienna x przyjmuje wartość zmiennej lokalnej tj x = 20
. Poza foo()
funkcją zmienna x przyjmie wartość zdefiniowaną w bar()
funkcji tj x = 25
. Dzieje się tak, ponieważ użyliśmy global
słowa kluczowego w x do stworzenia zmiennej globalnej wewnątrz bar()
funkcji (zasięg lokalny).
Jeśli wprowadzimy jakiekolwiek zmiany wewnątrz bar()
funkcji, zmiany pojawią się poza zakresem lokalnym, tj foo()
.