Pythons Unboundlocalerror virker veldig forvirrende når nykommere for Python opplever det for første gang. Imidlertid er det ganske enkelt. En ubundetlocalerror kan oppstå på grunn av to årsaker i Python, den ene er når du prøver å få tilgang til verdien av en variabel før den er tildelt, og det andre er når Python ikke klarer å skille mellom globale og lokale variabler.
Dette innlegget vil fungere som din guide for å løse Pythons Unboundlocalerror med mulige løsninger.
Årsak 1: Å få tilgang til lokal variabel før du tildeler verdi
Normalt, når programmereren ikke fungerer i noen funksjoner eller lokale omfangsvariabler, prøver du å få tilgang til en variabel før initialisering av den med en verdi returnerer følgende feil:
Men når den samme feilen utføres med lokale variabler, si i en funksjon, så returnerer programmet Unboundlocalerror, noe som betyr at det ikke kunne finne den lokale variabelen mens du får tilgang til den. For å demonstrere dette, følgende kode:
def func ():
trykk (x)
x = 420
func ()
Utført vil det gi følgende resultat:
Løsning: Fiksing av tilgangsrekkefølge for lokal variabel
For å unngå å møte denne feilen, må du bare sørge for at du initialiserer den lokale variabelen med en viss verdi før du prøver å få tilgang til den. Riktig kode for eksemplet ovenfor er som følger:
def func ():
x = 420
trykk (x)
func ()
Variabelen “x”Tildeles en verdi før den er tilgjengelig, og nå når dette programmet er utført, gir det følgende resultat på terminalen:
Utgangen verifiserer at du har fikset unboundlocalerror forårsaket av feil ordre om å få tilgang til den lokale variabelen.
Årsak 2: Python kan ikke skille mellom lokale og globale variabler
Denne grunnen er litt forvirrende for de fleste nye Python -entusiaster, og ingenting er logisk galt i programmet. For å demonstrere denne feilen på en ikke-sammenføyende måte, la oss ta følgende kode for å få tilgang til en global variabel i en funksjon:
x = 420
def func ():
trykk (x)
func ()
Denne koden produserer den feilfrie utgangen som er som følger:
Men når det blir gjort noen oppgave til den globale variabelen i funksjonen, for eksempel:
x = 420
def func ():
trykk (x)
x = 33
func ()
Det begynner å produsere unboundlocalerror som vist nedenfor:
Årsaken til dette er at så snart en endring i den globale variabelen blir gjort, tror programmet at brukeren ønsker å få tilgang til og endre en lokal variabel, på grunn av hvilken det ikke klarer å finne den lokale variabelen og returnerer UnboundlocArror.
Løsning: Bruk det globale nøkkelordet for å løse forvirring
Den beste måten å løse dette problemet er å bare bruke nøkkelordet "globalt" i starten av funksjonen for å fortelle programmet at denne lokale variabelen er koblet til den globale variabelen. For å demonstrere denne løsningen, ta følgende kode:
x = 420
def func ():
Global x
trykk (x)
x = 30
func ()
Dette vil produsere følgende utgang på terminalen når den utføres:
Du har lært årsakene til ubunden.
Konklusjon
Ubundlokalerror kan være forårsaket av å prøve å få tilgang til en lokal variabel før du tildeler den en viss verdi, eller på annen måte, kan det være forårsaket når programmet ikke kan skille ut om brukeren ønsker å få tilgang til den lokale variabelen eller den globale variabelen. Begge disse grunnene er blitt forklart sammen med deres demonstrasjon og løsning grundig i dette innlegget.