Beste svaret
Se denne koden.
- counter = 0
- def inkrement ():
- teller + = 1
- inkrement ()
Python har ikke variabelerklæringer, så den må selv finne ut omfanget av variabler. Det gjør det med en enkel regel: Hvis det er en oppgave å en variabel inne i en funksjon, blir denne variabelen ansett som lokal. Dermed blir linjen
teller + = 1
gjør implisitt teller lokalt til inkrement (). Prøver å utføre denne linjen vil imidlertid prøve å lese verdien av den lokale variabeltelleren før den tildeles, noe som resulterer i en Ubundet Lokalfeil.
For å løse denne typen feil gjør du følgende endringer.
- counter = 0
- def inkrement ():
- global teller
- teller + = 1
- økning ()
Alt det beste …!
Svar
UnboundLocalError heves når det refereres til en lokal variabel før den er blitt tildelt.
Det er en underklasse av NameError
Det betyr at du har en identifikator du prøvde å få tilgang til før den ble tildelt eller kanskje erklært.
En av de mange vanskeligheter med språk uten svak typesemantikk, flere arv og ingen felles baseklasse eller protokoll.
Der er jeg s for mye avhengighet av unntak der introspeksjon og kompilatoravledning kan være mer informativ før koden kan kjøres.
Det du tror du sparer ved å skrive inn tegn for å få validering i koden din, betaler du for med stakkspor .