Inspringen is een essentieel kenmerk van leesbare, onderhoudbare code, maar er zijn maar weinig talen die dit afdwingen. Python is een van de weinige.

Als Python bepaalt dat uw code onjuist is ingesprongen, ziet u het bericht "IndentationError" wanneer u uw code uitvoert. Maar hoe los je dit op en hoe voorkom je dit in de toekomst?

Waarom krijg je de IndentationError in Python?

De fout "IndentationError: verwacht een ingesprongen blok" is iets dat u waarschijnlijk zult zien wanneer u Python voor het eerst gaat gebruiken, vooral als u uit een andere programmeertaal komt.

De bijzonderheden van de inspringingsregels van Python zijn complex, maar komen op één ding neer: code inspringen in blokken. Dit geldt voor functies, if-clausules, enzovoort. Hier is een voorbeeld van onjuist opgemaakte Python-code:

fname = "Gaurav"
lname = "Siyal"

if fname == "Gaurav" en lname == "Siyal":
print("Je bent Gaurav")
anders:
print("Je bent iemand anders")

Wanneer u de bovenstaande code probeert uit te voeren, krijgt u een bericht als dit:

instagram viewer
 Bestand "tmp.py", regel 5
print("Je bent Gaurav")
^
IndentationError: verwacht een ingesprongen blok

In plaats daarvan moet u een tabblad of een reeks spaties toevoegen aan het begin van de twee regels die blokken vertegenwoordigen:

fname = "Gaurav"
lname = "Siyal"

if fname == "Gaurav" en lname == "Siyal":
print("Je bent Gaurav")
anders:
print("Je bent iemand anders")

Als u met spaties inspringt, kunt u elk willekeurig nummer gebruiken, zolang u maar consistent en ondubbelzinnig bent. De meeste programmeurs gebruiken twee, vier of acht spaties.

Veelvoorkomende gevallen van correcte inspringing

Hier zijn enkele voorbeelden waarnaar u kunt verwijzen, zodat u zeker weet dat u correct inspringt.

Als uitspraken

Laat het blok inspringen dat volgt op een als uitspraak:

if my_name == "Gaurav":
print("Mijn naam is Gaurav")
retourneer True

Functies

Het lichaam van een functie is een blok. Je moet dit hele blok laten inspringen:

def magic_number():
resultaat = 42
resultaat retourneren

print magisch_nummer()

Voor lussen

Net als bij een if-statement, moet de hoofdtekst van een for-lus één niveau meer worden ingesprongen dan de regel die begint met de voor trefwoord:

voor i binnen bereik (10):
afdrukken (ik)

Zorg ervoor dat uw editor correct inspringt

De meeste moderne teksteditors ondersteunen automatische code-inspringing. Als uw editor bepaalt dat een regel code moet worden ingesprongen, voegt hij automatisch tabs of spaties toe.

In Spyder, inspringopties zijn beschikbaar onder Extra > Voorkeuren > Broncode:

Als u vim gebruikt, kunt u: bewerk je configuratie en gebruik de automatisch inspringen en gerelateerde opties om inspringen te configureren. Hier is bijvoorbeeld een algemene opstelling:

automatisch inspringen instellen
uitvouwtabblad instellen
zet tabstop=4
stel softtabstop=4. in
zet shiftwidth=4

Dit zal automatisch inspringen met vier spaties.

Geen enkele editor kan echter automatisch inspringen kogelvrij maken. U moet nog steeds op inspringen letten, omdat sommige gevallen dubbelzinnig zijn:

In dit voorbeeld is de finale opbrengst statement is één niveau ingesprongen vanaf de functiehandtekening op de eerste regel. Als u echter uw cursor aan het einde van de voorlaatste regel plaatst en op drukt Binnenkomen, kan een van de twee dingen gebeuren. Uw redacteur zou de cursor kunnen plaatsen:

  1. Twee streepjes in, uitgelijnd met "res =..."
  2. Eén streepje naar binnen, uitgelijnd met de "els:"

Uw redacteur kan geen onderscheid maken tussen deze twee gevallen: u wilt misschien meer code toevoegen in het if/else-blok, of u kunt het niet doen.

Afhandelen van Python's 'Verwachte een ingesprongen blok'-fout

Fouten zijn een alledaags verschijnsel in Python, net als in elke andere programmeertaal. De strikte regels van Python over inspringen kunnen een nieuw soort fout toevoegen om over na te denken, maar ze zijn nuttig. Correct ingesprongen code is beter leesbaar en consistent in teams.

De inspringfout is niet de enige waarmee u te maken krijgt. Het helpt om bekend te zijn met veelvoorkomende Python-fouten, zodat u weet hoe u deze kunt debuggen en wat u moet doen om ze op te lossen.

Wat betekent de Python-fout "Lijst index buiten bereik"?

Lees volgende

DelenTweetenDelenE-mail

Gerelateerde onderwerpen

  • Programmeren
  • Python

Over de auteur

Gaurav Siyal (64 artikelen gepubliceerd)

Gaurav Siyal heeft twee jaar schrijfervaring en schreef voor een reeks digitale marketingbedrijven en documenten over de levenscyclus van software.

Meer van Gaurav Siyal

Abonneer op onze nieuwsbrief

Word lid van onze nieuwsbrief voor technische tips, recensies, gratis e-boeken en exclusieve deals!

Klik hier om je te abonneren