Beste antwoord
Zie deze code.
- counter = 0
- def increment ():
- counter + = 1
- increment ()
Python heeft geen declaraties van variabelen, dus het moet zelf de reikwijdte van variabelen uitzoeken. Het doet dit door een simpele regel: als er een toewijzing is aan een variabele in een functie, wordt die variabele als lokaal beschouwd. Dus de regel
counter + = 1
maakt de teller impliciet lokaal tot increment (). Als u deze regel probeert uit te voeren, wordt geprobeerd de waarde van de lokale variabele teller te lezen voordat deze wordt toegewezen, met als resultaat in een UnboundLocalError.
Breng de volgende wijzigingen aan om dit type fout op te lossen.
- counter = 0
- def increment ():
- globale teller
- teller + = 1
- increment ()
Met vriendelijke groeten …!
Antwoord
UnboundLocalError wordt gegenereerd wanneer er naar een lokale variabele wordt verwezen voordat deze is toegewezen.
Het is een subklasse van NameError
Het betekent dat je een identifier hebt die je probeerde te openen voordat deze werd toegewezen of misschien gedeclareerd.
Een van de vele ellende van talen zonder zwakke typesemantiek, meervoudige overerving en geen gemeenschappelijke basisklasse of protocol.
Daar i s teveel afhankelijkheid van uitzonderingen waarbij introspectie en compiler-inferentie informatiever zouden kunnen zijn voordat de code kon worden uitgevoerd.
Wat u denkt te besparen door tekens te typen om validatie in uw code te krijgen, betaalt u met stapeltraces .