Wat is een niet-gebonden lokale fout in python?


Beste antwoord

Zie deze code.

  1. counter = 0
  2. def increment ():
  3. counter + = 1
  4. 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.

  1. counter = 0
  2. def increment ():
  3. globale teller
  4. teller + = 1
  5. 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 .

Geef een reactie

Het e-mailadres wordt niet gepubliceerd. Vereiste velden zijn gemarkeerd met *