Globalne słowo kluczowe Python (z przykładami)

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 globalsł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 globalsłó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ć globalsłowa kluczowego.
  • Używamy globalsłowa kluczowego do odczytywania i zapisywania zmiennej globalnej wewnątrz funkcji.
  • Użycie globalsł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 globalsł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.pydo 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.pyplik do przechowywania zmiennych globalnych

 a = 0 b = "empty"

Utwórz update.pyplik, aby zmienić zmienne globalne

 import config config.a = 10 config.b = "alphabet"

Utwórz main.pyplik, aby przetestować zmiany wartości

 import config import update print(config.a) print(config.b)

Kiedy uruchomimy main.pyplik, wynik będzie

 10 alfabetów

W powyższym przykładzie, stworzyliśmy trzy pliki: config.py, update.py, i main.py.

Moduł config.pyprzechowuje globalne zmienne a i b. W update.pypliku importujemy config.pymoduł i modyfikujemy wartości a i b. Podobnie w main.pypliku importujemy zarówno plik, jak config.pyi update.pymodule. 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 globalsł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().

Interesujące artykuły...