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
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:
- To innrykksnivåer i, justert med "res =..."
- 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
Relaterte temaer
- Programmering
- Python
Om forfatteren
Gaurav Siyal har to års skriveerfaring, og har skrevet for en rekke digitale markedsføringsfirmaer og programvarelivssyklusdokumenter.
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