Nejlepší odpověď
Viz tento kód.
- counter = 0
- def increment ():
- counter + = 1
- přírůstek ()
Python nemá deklarace proměnných, takže musí sám zjistit rozsah proměnných. Činí tak pomocí jednoduchého pravidla: Pokud existuje přiřazení proměnná uvnitř funkce, tato proměnná je považována za místní. Řádek
counter + = 1
implicitně způsobí, že čítač je lokální k přírůstku (). Pokus o provedení tohoto řádku se však pokusí přečíst hodnotu čítače lokálních proměnných před jeho přiřazením, což má za následek v UnboundLocalError.
Chcete-li tento typ chyby vyřešit, proveďte následující změny.
- counter = 0
- def increment ():
- globální počítadlo
- counter + = 1
- přírůstek ()
Všechno nejlepší …!
Odpověď
UnboundLocalError se vyvolá, když se na místní proměnnou odkazuje dříve, než byla přiřazeno.
Je to podtřída NameError
To znamená, že máte identifikátor, ke kterému jste se pokusili získat přístup, než bude přiřazen nebo možná deklarován.
Jeden z mnoho strastí jazyků bez slabé sémantiky psaní, vícenásobné dědičnosti a bez společné základní třídy nebo protokolu.
Tady příliš se spoléháme na výjimky, kdy introspekce a odvození kompilátoru mohou být informativní ještě před spuštěním kódu.
To, co si myslíte, že ukládáte při psaní znaků, aby bylo v kódu ověření, zaplatíte za stopy zásobníku .