Zamik je bistvena značilnost berljive kode, ki jo je mogoče vzdrževati, vendar jo le malo jezikov uveljavlja. Python je eden tistih redkih.

Če Python ugotovi, da je vaša koda napačno zamaknjena, boste ob zagonu kode videli sporočilo »IndentationError«. Toda kako to odpraviti in kako preprečiti v prihodnosti?

Zakaj v Pythonu dobite napako IndentationError?

Napaka »IndentationError: pričakovan zamaknjen blok« je nekaj, kar boste verjetno videli, ko boste prvič začeli uporabljati Python, še posebej, če prihajate iz drugega programskega jezika.

The posebnosti Pythonovih pravil zamikanja so zapleteni, vendar se skrčijo na eno stvar: zamik kode v blokih. To velja za funkcije, klavzule if in tako naprej. Tukaj je primer napačno oblikovane kode Python:

fname = "Gaurav"
lname = "Siyal"

če fname == "Gaurav" in lname == "Siyal":
print ("Ti si Gaurav")
drugo:
print("Ti si nekdo drug")

Ko poskusite zagnati zgornjo kodo, boste prejeli takšno sporočilo:

 Datoteka "tmp.py", vrstica 5
print ("Ti si Gaurav")
^
IndentationError: pričakovan je bil zamaknjen blok
instagram viewer

Namesto tega morate na začetek dveh vrstic, ki predstavljata bloke, dodati zavihek ali niz presledkov:

fname = "Gaurav"
lname = "Siyal"

če fname == "Gaurav" in lname == "Siyal":
print ("Ti si Gaurav")
drugo:
print("Ti si nekdo drug")

Če zamikate s presledki, lahko dejansko uporabite poljubno število, če ste dosledni in nedvoumni. Večina programerjev uporablja dva, štiri ali osem presledkov.

Pogosti primeri pravilne vdolbine

Tukaj je nekaj primerov, na katere se lahko sklicujete, da boste lahko zagotovili, da ste pravilno zamaknjeni.

Če izjave

Zamaknite blok, ki sledi znaku če izjava:

če my_name == "Gaurav":
print("Ime mi je Gaurav")
vrni True

Funkcije

Telo funkcije je blok. Celoten blok morate zamakniti:

def magic_number():
rezultat = 42
vrni rezultat

natisni magic_number()

Za zanke

Kot pri stavku if, mora biti telo zanke for zamaknjeno za eno raven več kot vrstica, ki se začne z za ključna beseda:

za i v območju (10):
natisni (i)

Prepričajte se, da je vaš urejevalnik pravilno zamaknjen

Večina sodobnih urejevalnikov besedil podpira samodejno zamikanje kode. Če vaš urejevalnik ugotovi, da mora biti vrstica kode zamaknjena, bo samodejno dodal tabulatorje ali presledke.

V Spyder, možnosti zamika so na voljo pod Orodja > Nastavitve > Izvorna koda:

Če uporabljate vim, lahko uredite svojo konfiguracijo in uporabite samodejni zamik in povezane možnosti za konfiguracijo zamika. Tu je na primer običajna nastavitev:

nastavi samodejni zamik
nastavite razširitveno kartico
nastavite tabstop=4
nastavite softtabstop=4
nastavi shiftwidth=4

To bo samodejno zamaknilo s štirimi presledki.

Vendar noben urejevalnik ne more narediti samodejne vdolbine neprebojne. Še vedno boste morali biti pozorni na zamik, ker so nekateri primeri dvoumni:

V tem primeru je finale vrnitev stavek je zamaknjen eno raven od podpisa funkcije v prvi vrstici. Če pa postavite kazalec na konec predzadnje vrstice in pritisnite Vnesite, se lahko zgodi ena od dveh stvari. Vaš urejevalnik bi lahko postavil kazalec:

  1. Dve ravni zamika v, poravnani z "res =..."
  2. Ena stopnja zamika v, poravnana z "drugo:"

Vaš urejevalnik ne more razlikovati med tema dvema primeroma: morda boste želeli dodati več kode v blok if/else ali pa ne.

Obravnava Pythonove napake »Pričakovan zamaknjen blok«.

Napake so v Pythonu vsakdanji pojav, tako kot v katerem koli drugem programskem jeziku. Pythonova stroga pravila o zamiku lahko dodajo novo vrsto napake, o kateri je treba razmišljati, vendar so uporabna. Pravilno zamaknjena koda je bolj berljiva in dosledna v skupinah.

Napaka v zamiku ni edina, s katero se boste morali soočiti. Pomaga, če poznate pogoste napake Pythona, tako da veste, kako jih odpraviti in kaj storiti, da jih odpravite.

Kaj pomeni napaka Python "Indeks seznama izven obsega"?

Preberite Naprej

DelitiTweetDelitiE-naslov

Povezane teme

  • Programiranje
  • Python

O avtorju

Gaurav Siyal (Objavljenih 64 člankov)

Gaurav Siyal ima dve leti izkušenj s pisanjem, pisanjem za vrsto podjetij za digitalni marketing in dokumente o življenjskem ciklu programske opreme.

Več od Gaurav Siyal

Naročite se na naše novice

Pridružite se našemu glasilu za tehnične nasvete, ocene, brezplačne e-knjige in ekskluzivne ponudbe!

Kliknite tukaj, da se naročite