Atkāpe ir svarīga lasāma, apkopjama koda iezīme, taču tikai dažas valodas to īsteno. Python ir viens no tiem nedaudzajiem.

Ja Python konstatē, ka kods ir ievilkts nepareizi, palaižot kodu, tiks parādīts ziņojums “IndentationError”. Bet kā to novērst un kā to novērst nākotnē?

Kāpēc programmā Python tiek parādīta atkāpes kļūda?

Kļūda “IndentationError: paredzams atkāpes bloks” ir kaut kas tāds, ko jūs, visticamāk, redzēsit, kad pirmo reizi sākat lietot Python, it īpaši, ja esat nācis no citas programmēšanas valodas.

The Python atkāpes noteikumu specifika ir sarežģītas, taču tās aprobežojas ar vienu lietu: koda atkāpi blokos. Tas attiecas uz funkcijām, if klauzulām un tā tālāk. Šeit ir nepareizi formatēta Python koda piemērs:

fname = "Gaurav"
lname = "Siyal"

if fname == "Gaurav" un lname == "Siyal":
drukāt ("Tu esi Gauravs")
cits:
print ("Tu esi kāds cits")

Mēģinot palaist iepriekš minēto kodu, tiks parādīts šāds ziņojums:

 Fails "tmp.py", 5. rinda
drukāt ("Tu esi Gauravs")
^
IndentationError: paredzēts bloks ar atkāpi
instagram viewer

Tā vietā divu rindu, kas apzīmē blokus, sākumā ir jāpievieno tabulēšana vai vairākas atstarpes:

fname = "Gaurav"
lname = "Siyal"

if fname == "Gaurav" un lname == "Siyal":
drukāt ("Tu esi Gauravs")
cits:
print ("Tu esi kāds cits")

Atkāpjoties ar atstarpēm, faktiski varat izmantot jebkuru ciparu, kas jums patīk, ja vien esat konsekvents un nepārprotams. Lielākā daļa programmētāju izmanto divas, četras vai astoņas atstarpes.

Bieži sastopami pareizas atkāpes gadījumi

Šeit ir daži piemēri, uz kuriem varat atsaukties, lai pārliecinātos, ka atkāpe ir veikta pareizi.

Ja paziņojumi

Atkāpe blokā, kas seko an ja paziņojums, apgalvojums:

if my_name == "Gaurav":
print ("Mani sauc Gaurav")
atgriezties True

Funkcijas

Funkcijas pamatteksts ir bloks. Jums vajadzētu atkāpties visam šim blokam:

def magic_number():
rezultāts = 42
atgriezt rezultātu

drukāt burvju_skaitli()

Cilpām

Tāpat kā ar paziņojumu if, for cilpas pamattekstam jābūt atkāpei par vienu līmeni vairāk nekā līnijai, kas sākas ar priekš atslēgvārds:

i diapazonā (10):
drukāt (i)

Pārliecinieties, vai jūsu redaktors ir pareizi ievilcis atkāpes

Lielākā daļa mūsdienu teksta redaktoru atbalsta automātisku koda atkāpi. Ja redaktors nosaka, ka koda rindiņai jābūt atkāpei, tas automātiski pievienos tabulēšanas zīmes vai atstarpes.

In Spyder, atkāpes opcijas ir pieejamas sadaļā Rīki > Preferences > Avota kods:

Ja izmantojat vim, varat rediģēt savu konfigurāciju un izmantojiet autoindent un saistītās opcijas, lai konfigurētu atkāpi. Piemēram, šeit ir izplatīta iestatīšana:

iestatīt automātisko atkāpi
iestatīt expandtab
iestatīt tabstop=4
iestatiet softtabstop=4
iestatīt nobīdes platumu=4

Tas automātiski izveidos atkāpi, izmantojot četras atstarpes.

Tomēr neviens redaktors nevar padarīt automātisku atkāpi ložu necaurlaidīgu. Jums joprojām būs jāpievērš uzmanība atkāpēm, jo ​​daži gadījumi ir neskaidri:

Šajā piemērā fināls atgriezties paziņojums ir atkāpe vienu līmeni no funkcijas paraksta pirmajā rindā. Tomēr, ja novietojat kursoru priekšpēdējās rindas beigās un nospiediet Ievadiet, var notikt viena no divām lietām. Jūsu redaktors var novietot kursoru:

  1. Divi atkāpes līmeņi, kas līdzināti ar "res =..."
  2. Viena atkāpe līmenī, līdzināta ar "else:"

Jūsu redaktors nevar atšķirt šos divus gadījumus: iespējams, vēlēsities pievienot vairāk koda blokam if/else vai arī ne.

Apstrādājot Python kļūdu “Sagaidāms atkāpes bloks”.

Kļūdas Python, tāpat kā jebkurā citā programmēšanas valodā, ir ikdiena. Python stingrie noteikumi par atkāpi var radīt jauna veida kļūdas, par kurām jādomā, taču tie ir noderīgi. Pareizi ievilkts kods ir labāk lasāms un konsekventāks visās komandās.

Atkāpes kļūda nav vienīgā, ar kuru jums būs jātiek galā. Tas palīdz pārzināt izplatītākās Python kļūdas, lai zinātu, kā tās atkļūdot un kā tās novērst.

Ko nozīmē Python kļūda "Saraksta indekss ārpus diapazona"?

Lasiet Tālāk

DalītiesČivinātDalītiesE-pasts

Saistītās tēmas

  • Programmēšana
  • Python

Par autoru

Gaurav Siyal (Publicēti 64 raksti)

Gauravam Sijalam ir divu gadu rakstīšanas pieredze, rakstot virknei digitālā mārketinga firmu un programmatūras dzīves cikla dokumentus.

Vairāk no Gaurav Siyal

Abonējiet mūsu biļetenu

Pievienojieties mūsu biļetenam, lai saņemtu tehniskos padomus, pārskatus, bezmaksas e-grāmatas un ekskluzīvus piedāvājumus!

Noklikšķiniet šeit, lai abonētu