Co to jest niezwiązany błąd lokalny w Pythonie?


Najlepsza odpowiedź

Zobacz ten kod.

  1. counter = 0
  2. def inkrementacja ():
  3. licznik + = 1
  4. przyrost ()

Python nie ma deklaracji zmiennych, więc sam musi określić zakres zmiennych. Robi to według prostej reguły: jeśli istnieje przypisanie do zmienna wewnątrz funkcji, ta zmienna jest uważana za lokalną. Zatem wiersz

counter + = 1

niejawnie ustawia licznik jako lokalny inkrementacja (). Jednak próba wykonania tego wiersza spowoduje próbę odczytania wartości zmiennej lokalnej licznika przed przypisaniem, w wyniku czego w UnboundLocalError.

Aby rozwiązać ten typ błędu, wprowadź następujące zmiany.

  1. counter = 0
  2. def przyrost ():
  3. licznik globalny
  4. counter + = 1
  5. przyrost ()

Wszystkiego najlepszego …!

Odpowiedź

UnboundLocalError jest wywoływany, gdy odwołuje się do zmiennej lokalnej, zanim została przypisane.

Jest to podklasa NameError

Oznacza to, że masz identyfikator, do którego próbowałeś uzyskać dostęp, zanim został przypisany lub może zadeklarowany.

Jeden z wiele nieszczęść języków bez słabej semantyki pisania, wielokrotnego dziedziczenia i bez wspólnej klasy bazowej lub protokołu.

zbytnio polegasz na wyjątkach, w których introspekcja i wnioskowanie kompilatora mogą być bardziej pouczające przed uruchomieniem kodu.

To, co myślisz, że oszczędzasz wpisując znaki, aby mieć walidację w kodzie, płacisz śladami stosu .

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *