Słowo kluczowe nonlocal
w Pythonie jest używane głównie w zagnieżdżonych funkcjach. Pozwala na modyfikację zmiennych zdefiniowanych w zakresie nadrzędnym (leksykalnie otaczającym zakres). W ten sposób nonlocal
umożliwia zmianę zmiennych znajdujących się w zakresie nadrzędnym, ale nie jest globalnym zakresem. Jest to szczególnie przydatne w programowaniu funkcjonalnym i przy tworzeniu dekoratorów.
Przykład użycia nonlocal
Rozważmy poniższy przykład kodu, w którym używamy nonlocal
do modyfikacji wartości zmiennej zdefiniowanej w zewnętrznej funkcji:
def outer_function():
# Zmienna zdefiniowana w zakresie zewnętrznej funkcji
outer_variable = "początkowa wartość"
def inner_function():
# Deklaracja, że chcemy modyfikować zmienną z zakresu
# zewnętrznego, a nie tworzyć lokalną
nonlocal outer_variable
outer_variable = "zmieniona wartość"
print("Przed wywołaniem funkcji wewnętrznej:", outer_variable)
inner_function()
print("Po wywołaniu funkcji wewnętrznej:", outer_variable)
outer_function()
W tym przykładzie outer_variable
jest zmienną zdefiniowaną w zakresie funkcji outer_function
. Gdybyśmy próbowali zmodyfikować outer_variable
wewnątrz inner_function
bez użycia nonlocal
, Python utworzyłby nową lokalną zmienną w zakresie inner_function
, zamiast modyfikować zmienną z zakresu nadrzędnego. Dzięki użyciu nonlocal
, inner_function
może zmodyfikować outer_variable
.
Podsumowanie
Słowo kluczowe nonlocal
jest potężnym narzędziem w Pythonie, które zapewnia większą kontrolę nad zakresami zmiennych w zagnieżdżonych funkcjach. Umożliwia modyfikowanie zmiennych zdefiniowanych w zakresie otaczającym, co jest szczególnie przydatne w bardziej złożonych konstrukcjach programistycznych, takich jak dekoratory czy funkcje zamykające (closures). Zrozumienie nonlocal
pomaga w tworzeniu bardziej elastycznego i wyrafinowanego kodu w Pythonie.
Jeżeli chcesz przyśpieszyć swoją naukę tworzenia stron chciałbym polecić mój kurs Python od podstaw w którym nauczysz się tego języka od podstaw do zaawansowanych jego aspektów.