Python Unboundlocalerror

Python Unboundlocalerror

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.