Odsazení je zásadní funkcí čitelného a udržovatelného kódu, ale jen málo jazyků jej vynucuje. Python je jeden z mála.

Pokud Python zjistí, že je váš kód odsazen nesprávně, při spuštění kódu se zobrazí zpráva „IndentationError“. Jak to ale napravit a jak tomu v budoucnu předejít?

Proč se vám v Pythonu zobrazuje chyba IndentationError?

Chyba „IndentationError: očekávaný odsazený blok“ je něco, co pravděpodobně uvidíte, když poprvé začnete používat Python, zvláště pokud pocházíte z jiného programovacího jazyka.

The specifika pravidel odsazování v Pythonu jsou složité, ale scvrkají se na jednu věc: odsazení kódu v blocích. To platí pro funkce, klauzule if a tak dále. Zde je příklad nesprávně naformátovaného kódu Pythonu:

fname = "Gaurav"
jméno = "Siyal"

if fname == "Gaurav" a lname == "Siyal":
tisk ("Ty jsi Gaurav")
jiný:
tisk ("Jsi někdo jiný")

Když se pokusíte spustit výše uvedený kód, zobrazí se zpráva podobná této:

 Soubor "tmp.py", řádek 5
tisk ("Ty jsi Gaurav")
^
IndentationError: očekává se odsazený blok

Místo toho byste měli přidat buď tabulátor nebo řadu mezer na začátek dvou řádků, které představují bloky:

fname = "Gaurav"
jméno = "Siyal"

if fname == "Gaurav" a lname == "Siyal":
tisk ("Ty jsi Gaurav")
jiný:
tisk ("Jsi někdo jiný")

Pokud odsadíte mezery, můžete skutečně použít libovolné číslo, pokud budete konzistentní a jednoznační. Většina programátorů používá dvě, čtyři nebo osm mezer.

Běžné případy správného odsazení

Zde je několik příkladů, na které se můžete odkázat, abyste se ujistili, že odsazujete správně.

Pokud prohlášení

Odsadit blok, který následuje za a -li prohlášení:

if my_name == "Gaurav":
tisk ("Jmenuji se Gaurav")
vrátit True

Funkce

Tělo funkce je blok. Měli byste odsadit celý tento blok:

def magic_number():
výsledek = 42
vrátit výsledek

tisk magic_number()

Pro smyčky

Stejně jako u příkazu if by tělo cyklu for mělo být odsazeno o jednu úroveň více než řádek začínající znakem pro klíčové slovo:

pro i v dosahu (10):
tisknout (i)

Ujistěte se, že váš editor odsazuje správně

Většina moderních textových editorů podporuje automatické odsazování kódu. Pokud váš editor určí, že by měl být řádek kódu odsazen, automaticky přidá tabulátory nebo mezery.

v Spyder, možnosti odsazení jsou k dispozici pod Nástroje > Předvolby > Zdrojový kód:

Pokud používáte vim, můžete upravit konfiguraci a používat autoindent a související možnosti konfigurace odsazení. Zde je například běžné nastavení:

nastavit automatické odsazení
nastavit rozbalovací kartu
nastavit tabstop=4
nastavte softtabstop=4
nastavte šířku posuvu=4

Tím se automaticky odsadí pomocí čtyř mezer.

Žádný editor však nedokáže automatické odsazení učinit neprůstřelným. Stále budete muset věnovat pozornost odsazení, protože některé případy jsou nejednoznačné:

V tomto příkladu finále vrátit se příkaz je odsazen o jednu úroveň v od podpisu funkce na prvním řádku. Pokud však umístíte kurzor na konec předposledního řádku a stisknete Vstupte, může se stát jedna ze dvou věcí. Váš editor může umístit kurzor:

  1. Dvě úrovně odsazení, zarovnané s "res =..."
  2. Jedna úroveň odsazení dovnitř, zarovnaná s "ostatní:"

Váš editor nedokáže rozlišit mezi těmito dvěma případy: možná budete chtít přidat další kód do bloku if/else, nebo nemusíte.

Zpracování chyby „Očekávaný odsazený blok“ Pythonu

Chyby jsou v Pythonu každodenním jevem, stejně jako v jakémkoli jiném programovacím jazyce. Přísná pravidla Pythonu o odsazování mohou přidat nový druh chyb, o kterých je třeba přemýšlet, ale jsou užitečná. Správně odsazený kód je čitelnější a konzistentnější napříč týmy.

Chyba v odsazení není jediná, se kterou se budete muset vypořádat. Pomáhá znát běžné chyby Pythonu, abyste věděli, jak je ladit a co dělat, abyste je opravili.

Co znamená chyba Pythonu „Vypsat index mimo rozsah“?

Přečtěte si další

PodíltweetPodílE-mailem

Související témata

  • Programování
  • Krajta

O autorovi

Gaurav Siyal (Publikováno 64 článků)

Gaurav Siyal má dva roky zkušeností s psaním, psaním pro řadu digitálních marketingových firem a dokumentů životního cyklu softwaru.

Více od Gaurava Siyala

Přihlaste se k odběru našeho newsletteru

Připojte se k našemu zpravodaji a získejte technické tipy, recenze, bezplatné e-knihy a exkluzivní nabídky!

Chcete-li se přihlásit k odběru, klikněte sem