A behúzás az olvasható, karbantartható kód létfontosságú jellemzője, de kevés nyelv alkalmazza ezt. A Python azon kevesek egyike.
Ha a Python megállapítja, hogy a kód helytelenül van behúzva, a kód futtatásakor az „IndentationError” üzenet jelenik meg. De hogyan lehet ezt orvosolni, és hogyan lehet megelőzni a jövőben?
Miért jelenik meg az IndentationError a Pythonban?
Az „IndentationError: várhatóan behúzott blokk” hiba valószínűleg akkor jelenik meg, amikor először elkezdi használni a Pythont, különösen akkor, ha másik programozási nyelvről érkezett.
Az a Python behúzási szabályainak sajátosságai összetettek, de egy dologra csapódnak le: a kód behúzása blokkokban. Ez vonatkozik a függvényekre, if záradékokra és így tovább. Íme egy példa a helytelenül formázott Python-kódra:
fname = "Gaurav"
lname = "Siyal"
if fname == "Gaurav" és lname == "Siyal":
print ("Te vagy Gaurav")
más:
print ("Te valaki más vagy")
Amikor megpróbálja futtatni a fenti kódot, egy ehhez hasonló üzenetet fog kapni:
"tmp.py" fájl, 5. sor
print ("Te vagy Gaurav")
^
IndentationError: behúzott blokkot várt
Ehelyett egy tabulátort vagy egy sor szóközt kell hozzáadnia a blokkokat jelző két sor elejéhez:
fname = "Gaurav"
lname = "Siyal"
if fname == "Gaurav" és lname == "Siyal":
print ("Te vagy Gaurav")
más:
print ("Te valaki más vagy")
Ha szóközöket ír be, akkor tulajdonképpen bármilyen számot használhat, feltéve, hogy következetes és egyértelmű. A legtöbb programozó két, négy vagy nyolc szóközt használ.
A helyes behúzás gyakori esetei
Íme néhány példa, amelyekre hivatkozhat, hogy megbizonyosodjon a helyes behúzásról.
Ha nyilatkozatok
Zárja be az an-t követő blokkot ha nyilatkozat:
if my_name == "Gaurav":
print("A nevem Gaurav")
vissza True
Funkciók
Egy függvény törzse egy blokk. Ezt a teljes blokkot be kell húzni:
def magic_number():
eredmény = 42
vissza az eredményt
print magic_number()
For Loops
Az if utasításhoz hasonlóan a for ciklus törzsét egy szinttel nagyobbra kell behúzni, mint a számára kulcsszó:
i a (10) tartományban:
nyomtatás (i)
Győződjön meg arról, hogy a szerkesztő megfelelően behúzza
A legtöbb modern szövegszerkesztő támogatja az automatikus kódbehúzást. Ha a szerkesztő úgy dönt, hogy egy kódsort be kell húzni, akkor automatikusan tabulátorokat vagy szóközöket ad hozzá.
Ban ben Spyderalatt érhetők el a behúzási lehetőségek Eszközök > Beállítások > Forráskód:
Ha vim-et használ, megteheti módosítsa a konfigurációt és használja a autoindent és a kapcsolódó lehetőségek a behúzás konfigurálásához. Például itt van egy általános beállítás:
autoindent beállítása
a expandtab beállítása
set tabstop=4
állítsa be a softtabstop=4-et
állítsa be a shiftwidth=4
Ez automatikusan behúzza négy szóközzel.
Az automatikus behúzást azonban egyetlen szerkesztő sem tudja golyóállóvá tenni. Továbbra is ügyelnie kell a behúzásra, mert egyes esetek nem egyértelműek:
Ebben a példában a végső Visszatérés Az utasítás az első sorban lévő függvényaláírástól egy szinttel behúzva van. Ha azonban a kurzort az utolsó előtti sor végére helyezi, és megnyomja Belép, két dolog egyike történhet. A szerkesztője elhelyezheti a kurzort:
- Két behúzási szint, a "res =..." karakterrel igazítva
- Egy behúzás szinttel, az "else:"-hez igazítva
A szerkesztője nem tud különbséget tenni e két eset között: lehet, hogy szeretne több kódot hozzáadni az if/else blokkhoz, vagy nem.
A Python „Expected an Indented Block” hibájának kezelése
A hibák mindennaposak a Pythonban, akárcsak bármely más programozási nyelvben. A Python behúzással kapcsolatos szigorú szabályai újfajta hibákhoz vezethetnek, amelyekre érdemes gondolni, de hasznosak. A megfelelően behúzott kód jobban olvasható és konzisztensebb a csapatok között.
Nem a behúzás hibája az egyetlen, amellyel foglalkoznia kell. Segít, ha ismeri a gyakori Python-hibákat, így tudja, hogyan lehet hibakeresni őket, és mit kell tennie a javításukhoz.
Mit jelent a Python "List index out of range" hiba?
Olvassa el a következőt
Kapcsolódó témák
- Programozás
- Piton
A szerzőről

Gaurav Siyal két éves írási tapasztalattal rendelkezik, számos digitális marketingcégnek ír és szoftver-életciklus-dokumentumokat írt.
Iratkozzon fel hírlevelünkre
Csatlakozzon hírlevelünkhöz műszaki tippekért, ismertetőkért, ingyenes e-könyvekért és exkluzív ajánlatokért!
Kattintson ide az előfizetéshez