Python UnboundLocalerRor

Python UnboundLocalerRor

UnboundLocalerror Pythona wydaje się bardzo mylący, gdy przybysze do Pythona doświadczają tego po raz pierwszy. Jest to jednak dość łatwe. NiezboundLokalerror może wystąpić z dwóch powodów w Pythonie, jeden jest wtedy, gdy próbujesz uzyskać dostęp do wartości zmiennej przed jej przypisaniem, a drugi jest wtedy, gdy Python nie rozróżnia zmiennych globalnych i lokalnych.

Ten post będzie działał jako przewodnik po rozwiązaniu Pythona UnboundLocalerror z możliwymi rozwiązaniami.

Powód 1: Dostęp do zmiennej lokalnej przed przypisaniem wartości

Zwykle, gdy programista nie działa w żadnych funkcjach lub lokalnych zmiennych zakresu, próba uzyskania dostępu do zmiennej przed inicjowaniem jej wartości zwraca następujący błąd:

Jednak gdy ten sam błąd jest wykonywany ze zmiennymi lokalnymi, powiedzmy wewnątrz funkcji, wówczas program zwraca UngoundLocalerror, co oznacza, że ​​nie mógł znaleźć zmiennej lokalnej, jednocześnie uzyskując dostęp do niej. Aby to zademonstrować, następujący kod:

def func ():
Drukuj (x)
x = 420
func ()

Wykonane, da następujący wynik:

Rozwiązanie: Ustawienie kolejności dostępu do zmiennej lokalnej

Aby uniknąć napotkania tego błędu, po prostu upewnij się, że inicjowanie zmiennej lokalnej z pewną wartością przed próbą dostępu do niego. Prawidłowy kod dla powyższego przykładu jest następujący:

def func ():
x = 420
Drukuj (x)
func ()

Zmienna „X”Przypisuje się wartość przed jej dostępem, a teraz, gdy ten program zostanie wykonany, tworzy następujący wynik na terminalu:

Wyjście weryfikuje, że pomyślnie naprawiłeś UNFOMBOUNDLOCALERRORROK ZŁADNY NIEZAWNY KOLEM Dostęp do zmiennej lokalnej.

Powód 2: Python nie może rozróżnić zmiennych lokalnych i globalnych

Ten powód jest trochę mylący dla większości nowych entuzjastów Pythona i nic nie jest logicznie złe w programie. Aby zademonstrować ten błąd w sposób niekontrolowany, weźmy następujący kod, aby uzyskać dostęp do zmiennej globalnej w funkcji:

x = 420
def func ():
Drukuj (x)
func ()

Ten kod wytwarza bezpłatne wyjście, które jest następujące:

Ale gdy wykonane jest pewne przypisanie do zmiennej globalnej wewnątrz funkcji, na przykład:

x = 420
def func ():
Drukuj (x)
x = 33
func ()

Zaczyna wytwarzać UNFEMENDLOCALERRROR, jak pokazano poniżej:

Powodem tego jest to, że gdy tylko dokonana zostanie zmiana zmiennej globalnej, program uważa, że ​​użytkownik chce uzyskać dostęp i zmienić zmienną lokalną, z powodu której nie stwierdza, że ​​zmienna lokalna i zwraca UNFEMENDLOCALRORRORRORROR.

Rozwiązanie: Użyj globalnego słowa kluczowego, aby rozwiązać zamieszanie

Najlepszym sposobem rozwiązania tego problemu jest po prostu użycie słowa kluczowego „globalnego” na początku funkcji, aby poinformować program, że ta zmienna lokalna jest powiązana z zmienną globalną. Aby zademonstrować to rozwiązanie, weź następujący kod:

x = 420
def func ():
Global x
Drukuj (x)
x = 30
func ()

To wytworzy następujące dane wyjściowe na terminalu po wykonaniu:

Z powodzeniem nauczyłeś się przyczyn UnboundLocalerror wraz z jego rozwiązaniem.

Wniosek

UnconLoCalerRor może być spowodowany próbą uzyskania dostępu do zmiennej lokalnej przed przypisaniem jej pewnej wartości lub w inny sposób, może być spowodowane, gdy program nie może odróżnić, czy użytkownik chce uzyskać dostęp do zmiennej lokalnej, czy zmiennej globalnej. Oba te powody zostały wyjaśnione wraz z ich demonstracją i rozwiązaniem dokładnie w tym poście.