Indrykning er et vigtigt træk ved læsbar, vedligeholdelsesvenlig kode, men få sprog håndhæver det. Python er en af de få.
Hvis Python fastslår, at din kode er indrykket forkert, vil du se meddelelsen "IndentationError", når du kører din kode. Men hvordan løser man dette, og hvordan forhindrer man det i fremtiden?
Hvorfor får du IndentationError i Python?
Fejlen "IndentationError: forventet en indrykket blok" er noget, du sandsynligvis vil se, når du først begynder at bruge Python, især hvis du kommer fra et andet programmeringssprog.
Det specifikationer for Pythons indrykningsregler er komplekse, men de koger ned til én ting: indrykningskode i blokke. Dette gælder funktioner, if-klausuler og så videre. Her er et eksempel på forkert formateret Python-kode:
fname = "Gaurav"
lname = "Siyal"
hvis fname == "Gaurav" og lname == "Siyal":
print ("Du er Gaurav")
andet:
print ("Du er en anden")
Når du prøver at køre ovenstående kode, får du en besked som denne:
Filen "tmp.py", linje 5
print ("Du er Gaurav")
^
IndentationError: forventede en indrykket blok
I stedet skal du tilføje enten en tabulator eller en række mellemrum i starten af de to linjer, der repræsenterer blokke:
fname = "Gaurav"
lname = "Siyal"
hvis fname == "Gaurav" og lname == "Siyal":
print ("Du er Gaurav")
andet:
print ("Du er en anden")
Hvis du indrykker med mellemrum, kan du faktisk bruge et hvilket som helst tal, du kan lide, så længe du er konsekvent og utvetydig. De fleste programmører bruger to, fire eller otte mellemrum.
Almindelige tilfælde af korrekt indrykning
Her er nogle eksempler, som du kan henvise til, så du kan sikre dig, at du indrykker korrekt.
Hvis udsagn
Indryk den blok, der følger efter en hvis udmelding:
hvis mit_navn == "Gaurav":
print ("Mit navn er Gaurav")
returner Sandt
Funktioner
En funktions krop er en blok. Du skal indrykke hele denne blok:
def magic_number():
resultat = 42
returnere resultat
print magic_number()
Til sløjfer
Som med en if-sætning skal brødteksten i en for-løkke indrykkes et niveau mere end linjen, der starter med til søgeord:
for i inden for rækkevidde (10):
print (i)
Sørg for, at din redaktør er indrykket korrekt
De fleste moderne teksteditorer understøtter automatisk kodeindrykning. Hvis din editor bestemmer, at en kodelinje skal indrykkes, tilføjer den automatisk tabulatorer eller mellemrum.
I Spyder, indrykningsmuligheder er tilgængelige under Værktøjer > Indstillinger > Kildekode:
Hvis du bruger vim, kan du redigere din konfiguration og bruge automatisk indrykning og relaterede muligheder for at konfigurere indrykning. For eksempel, her er en almindelig opsætning:
sæt autoindrykning
sæt expandtab
sæt tabstop=4
sæt softtabstop=4
sæt shiftwidth=4
Dette indrykkes automatisk med fire mellemrum.
Ingen redaktør kan dog gøre automatisk indrykning skudsikker. Du skal stadig være opmærksom på indrykning, fordi nogle tilfælde er tvetydige:
I dette eksempel, finalen Vend tilbage sætning er indrykket et niveau fra funktionssignaturen på den første linje. Men hvis du placerer din markør i slutningen af den næstsidste linje og trykker Gå ind, kan en af to ting ske. Din redaktør kunne placere markøren:
- To indrykningsniveauer i, justeret med "res =..."
- Et indrykningsniveau i, justeret med "andet:"
Din redaktør kan ikke skelne mellem disse to tilfælde: du vil måske tilføje mere kode i if/else-blokken, eller du må ikke.
Håndtering af Pythons 'Forventede en indrykket blok'-fejl
Fejl er en daglig begivenhed i Python, ligesom i ethvert andet programmeringssprog. Pythons strenge regler om indrykning kan tilføje en ny form for fejl at tænke på, men de er nyttige. Korrekt indrykket kode er mere læsbar og konsistent på tværs af teams.
Indrykningsfejlen er ikke den eneste, du skal håndtere. Det hjælper at være bekendt med almindelige Python-fejl, så du ved, hvordan du fejlretter dem, og hvad du skal gøre for at rette dem.
Hvad betyder fejlen "List index out of range" i Python?
Læs Næste
Relaterede emner
- Programmering
- Python
Om forfatteren

Gaurav Siyal har to års skriveerfaring og har skrevet for en række digitale marketingfirmaer og softwarelivscyklusdokumenter.
Abonner på vores nyhedsbrev
Tilmeld dig vores nyhedsbrev for tekniske tips, anmeldelser, gratis e-bøger og eksklusive tilbud!
Klik her for at abonnere