Indentarea este o caracteristică vitală a codului care poate fi citit și întreținut, dar puține limbi o impun. Python este unul dintre cei puțini.
Dacă Python determină că codul dvs. este indentat incorect, veți vedea mesajul „IndentationError” când executați codul. Dar cum remediați acest lucru și cum îl preveniți în viitor?
De ce obțineți IndentationError în Python?
Eroarea „IndentationError: așteptat un bloc indentat” este ceva pe care probabil să îl vedeți când începeți să utilizați Python, mai ales dacă veniți dintr-un alt limbaj de programare.
The specificul regulilor de indentare ale lui Python sunt complexe, dar se rezumă la un singur lucru: codul de indentare în blocuri. Acest lucru este valabil pentru funcții, clauze if și așa mai departe. Iată un exemplu de cod Python formatat incorect:
fname = "Gaurav"
lname = "Siyal"
if fname == „Gaurav” și lname == „Siyal”:
print("Tu esti Gaurav")
altceva:
print(„Ești altcineva”)
Când încercați să rulați codul de mai sus, veți primi un mesaj ca acesta:
Fișierul „tmp.py”, rândul 5
print("Tu esti Gaurav")
^
IndentationError: se așteaptă un bloc indentat
În schimb, ar trebui să adăugați fie o filă, fie o serie de spații la începutul celor două linii care reprezintă blocuri:
fname = "Gaurav"
lname = "Siyal"
if fname == „Gaurav” și lname == „Siyal”:
print("Tu esti Gaurav")
altceva:
print(„Ești altcineva”)
Dacă indentați cu spații, puteți utiliza de fapt orice număr doriți, atâta timp cât sunteți consecvent și fără ambiguitate. Majoritatea programatorilor folosesc două, patru sau opt spații.
Cazuri comune de indentare corectă
Iată câteva exemple la care vă puteți referi, astfel încât să vă asigurați că indentați corect.
Dacă declaraţiile
Indentați blocul care urmează unui dacă afirmație:
if my_name == "Gaurav":
print("Numele meu este Gaurav")
returnează Adevărat
Funcții
Corpul unei funcții este un bloc. Ar trebui să indentați întreg acest bloc:
def magic_number():
rezultat = 42
returnează rezultatul
tipăriți magic_number()
Pentru bucle
Ca și în cazul unei instrucțiuni if, corpul unei bucle for ar trebui să fie indentat cu un nivel mai mult decât linia care începe cu pentru cuvânt cheie:
pentru i în intervalul (10):
imprimare (i)
Asigurați-vă că editorul dvs. indentează corect
Majoritatea editoarelor de text moderne acceptă indentarea automată a codului. Dacă editorul dvs. stabilește că o linie de cod ar trebui să fie indentată, va adăuga file sau spații automat.
În Spyder, opțiunile de indentare sunt disponibile sub Instrumente > Preferințe > Cod sursă:
Dacă utilizați vim, puteți editați configurația dvs și folosiți autoindentare și opțiunile aferente pentru a configura indentarea. De exemplu, iată o configurație comună:
setați autoindentare
setați expandtab
set tabstop=4
setați softtabstop=4
setați shiftwidth=4
Aceasta va indenta automat folosind patru spații.
Cu toate acestea, niciun editor nu poate face indentarea automată antiglonț. În continuare va trebui să acordați atenție indentării, deoarece unele cazuri sunt ambigue:
În acest exemplu, finala întoarcere instrucțiunea este indentată la un nivel de la semnătura funcției de pe prima linie. Cu toate acestea, dacă poziționați cursorul la sfârșitul penultimului rând și apăsați introduce, se poate întâmpla unul din două lucruri. Editorul dvs. ar putea poziționa cursorul:
- Două niveluri de indentare, aliniate cu „res =...”
- Un nivel de indentare, aliniat cu „else:”
Editorul dvs. nu poate face distincția între aceste două cazuri: poate doriți să adăugați mai mult cod în blocul if/else sau nu.
Gestionarea erorii „Se aștepta un bloc indentat” a lui Python
Erorile sunt o apariție zilnică în Python, la fel ca în orice alt limbaj de programare. Regulile stricte ale Python despre indentare pot adăuga un nou tip de eroare la care să te gândești, dar sunt utile. Codul corect indentat este mai lizibil și mai consecvent între echipe.
Eroarea de indentare nu este singura cu care va trebui să te confrunți. Vă ajută să vă familiarizați cu erorile comune Python, astfel încât să știți cum să le depanați și ce să faceți pentru a le remedia.
Ce înseamnă eroarea Python „Indexul listei în afara intervalului”?
Citiți în continuare
Subiecte asemănătoare
- Programare
- Piton
Despre autor
Gaurav Siyal are doi ani de experiență în scris, scriind pentru o serie de firme de marketing digital și documente despre ciclul de viață al software-ului.
Aboneaza-te la newsletter-ul nostru
Alăturați-vă buletinului nostru informativ pentru sfaturi tehnice, recenzii, cărți electronice gratuite și oferte exclusive!
Click aici pentru a te abona