Innrykk er en viktig funksjon for lesbar, vedlikeholdbar kode, men få språk håndhever den. Python er en av de få.

Hvis Python fastslår at koden din er innrykket feil, vil du se meldingen "IndentationError" når du kjører koden. Men hvordan fikser du dette, og hvordan forhindrer du det i fremtiden?

Hvorfor får du InnentationError i Python?

Feilen "IndentationError: forventet en innrykket blokk" er noe du sannsynligvis vil se når du først begynner å bruke Python, spesielt hvis du kommer fra et annet programmeringsspråk.

De spesifikasjoner av Pythons innrykksregler er komplekse, men de koker ned til én ting: innrykk kode i blokker. Dette gjelder funksjoner, if-klausuler og så videre. Her er et eksempel på feil formatert Python-kode:

fname = "Gaurav"
lname = "Siyal"

hvis fname == "Gaurav" og lname == "Siyal":
print ("Du er Gaurav")
ellers:
print ("Du er en annen")

Når du prøver å kjøre koden ovenfor, får du en melding som denne:

 Fil "tmp.py", linje 5
print ("Du er Gaurav")
^
IndentationError: forventet en innrykket blokk
instagram viewer

I stedet bør du legge til enten en tabulator eller en rekke mellomrom i starten av de to linjene som representerer blokker:

fname = "Gaurav"
lname = "Siyal"

hvis fname == "Gaurav" og lname == "Siyal":
print ("Du er Gaurav")
ellers:
print ("Du er en annen")

Hvis du rykker inn med mellomrom, kan du faktisk bruke et hvilket som helst tall du vil, så lenge du er konsekvent og entydig. De fleste programmerere bruker to, fire eller åtte mellomrom.

Vanlige tilfeller av korrekt innrykk

Her er noen eksempler du kan referere til, slik at du kan sikre at du innrykker riktig.

Hvis uttalelser

Trekk inn blokken som følger en hvis uttalelse:

hvis mitt_navn == "Gaurav":
print("Mitt navn er Gaurav")
returner True

Funksjoner

Kroppen til en funksjon er en blokk. Du bør rykke inn hele denne blokken:

def magic_number():
resultat = 42
returnere resultat

print magic_number()

For løkker

Som med en if-setning, skal brødteksten til en for-løkke rykkes inn ett nivå mer enn linjen som starter med til nøkkelord:

for i i området (10):
skriv ut (i)

Sørg for at redaktøren din rykker inn riktig

De fleste moderne tekstredigerere støtter automatisk kodeinnrykk. Hvis redaktøren din bestemmer at en kodelinje skal rykkes inn, vil den automatisk legge til tabulatorer eller mellomrom.

I Spyder, innrykk alternativer er tilgjengelig under Verktøy > Innstillinger > Kildekode:

Hvis du bruker vim, kan du redigere konfigurasjonen din og bruk autoinnrykk og relaterte alternativer for å konfigurere innrykk. For eksempel, her er et vanlig oppsett:

angi autoinnrykk
sett expandtab
sett tabstop=4
sett softtabstop=4
sett shiftwidth=4

Dette vil automatisk rykke inn med fire mellomrom.

Imidlertid kan ingen redaktør gjøre automatisk innrykk skuddsikker. Du må fortsatt være oppmerksom på innrykk fordi noen tilfeller er tvetydige:

I dette eksemplet, finalen komme tilbake setningen rykkes ett nivå inn fra funksjonssignaturen på den første linjen. Men hvis du plasserer markøren på slutten av nest siste linje og trykker Tast inn, en av to ting kan skje. Redaktøren din kan plassere markøren:

  1. To innrykksnivåer i, justert med "res =..."
  2. Ett innrykk nivå i, justert med "else:"

Redaktøren din kan ikke skille mellom disse to tilfellene: du vil kanskje legge til mer kode i if/else-blokken, eller kanskje ikke.

Håndtering av Pythons 'Forventet en innrykket blokk'-feil

Feil er en hverdagslig foreteelse i Python, akkurat som i alle andre programmeringsspråk. Pythons strenge regler om innrykk kan legge til en ny type feil å tenke på, men de er nyttige. Riktig innrykket kode er mer lesbar og konsistent på tvers av team.

Innrykkfeilen er ikke den eneste du må forholde deg til. Det hjelper å bli kjent med vanlige Python-feil, slik at du vet hvordan du feilsøker dem og hva du skal gjøre for å fikse dem.

Hva betyr Python "List index out of range"-feilen?

Les Neste

DelekvitringDeleE-post

Relaterte temaer

  • Programmering
  • Python

Om forfatteren

Gaurav Siyal (64 artikler publisert)

Gaurav Siyal har to års skriveerfaring, og har skrevet for en rekke digitale markedsføringsfirmaer og programvarelivssyklusdokumenter.

Mer fra Gaurav Siyal

Abonner på vårt nyhetsbrev

Bli med i vårt nyhetsbrev for tekniske tips, anmeldelser, gratis e-bøker og eksklusive tilbud!

Klikk her for å abonnere