global i nonlocal
Pozwalają funkcji zmieniać zmienne z zasięgu globalnego lub funkcji otaczającej.
Przykład
#Python
def make_counter():
count = 0
def increment():
nonlocal count
count += 1
return count
return increment
counter = make_counter()
counter()
counter()
print(counter())
total = 0
def add_points(points):
global total
total += points
add_points(20)
add_points(30)
print(total)Wynikzapisany wynik, możesz go sprawdzić
3
50
Definicja i zastosowanie
#Zmienna przypisana wewnątrz funkcji jest domyślnie lokalna. Jeśli chcesz zmienić zmienną zdefiniowaną poza funkcją, musisz to zadeklarować: global dla zmiennych modułu, nonlocal dla zmiennych funkcji otaczającej.
nonlocal przydaje się w funkcjach zagnieżdżonych, na przykład przy tworzeniu licznika, który pamięta stan między wywołaniami (tak zwane domknięcie).
Nadużywanie global utrudnia śledzenie, kto i kiedy zmienia dane. Zwykle lepiej przekazać wartość jako argument i zwrócić nową przez return albo użyć klasy.
Składnia
#Składnia
def funkcja():
global zmienna
zmienna = nowa_wartoscDobre praktyki
#- Zanim użyjesz
global, sprawdź, czy nie wystarczy zwrócić wartości z funkcji. - Samo odczytywanie zmiennej globalnej nie wymaga
global. Deklaracja jest potrzebna tylko do przypisania.
Powiązane hasła
#- defDefiniuje funkcję: nazwany blok kodu z parametrami, który można wywoływać wielokrotnie.
- classDefiniuje klasę: szablon obiektów łączący dane i funkcje, które na nich działają.
- lambdaKrótka funkcja anonimowa zapisana w jednym wyrażeniu.
- DekoratoryFunkcje, które opakowują inne funkcje i dodają im zachowanie, np. logowanie lub sprawdzanie uprawnień. Zapis @nazwa.
Widzisz błąd albo brakuje przykładu? Napisz do nas.