Błąd wcięcia w Pythonie: przyczyny, jak rozwiązać, korzyści

Opublikowany: 2021-05-26

Jako interpretowany język programowania wysokiego poziomu i ogólnego przeznaczenia, Python coraz częściej zdobywa uznanie jako najbardziej obiecujące, wiodące i wschodzące platformy na świecie. Python jest niczym bez genialnej filozofii projektowania.

Kluczową cechą jest nacisk położony na godne uwagi użycie znaczących wcięć w celu zwiększenia czytelności kodu. Poniższa ilustracja przedstawia pokrótce filary filozofii projektowania Pythona w postaci dwudziestu aforyzmów, do których nawiązuje Tim Peters, wieloletni Pythonowiec, który ostatecznie stał się jednym z najbardziej płodnych i wytrwałych programistów rdzenia Pythona.

Spis treści

Krótkie wprowadzenie do Pythona

Zanim zagłębimy się w szczegóły techniczne leżące u podstaw błędu wcięć w Pythonie, musimy zapoznać się z podstawami Pythona i potrzebą wcięcia. Takie postępowanie nie tylko pomoże ci lepiej docenić sam błąd, ale także zapewni wgląd w korzyści, które programiści zyskują, skutecznie decydując się na jego rozwiązanie.

Powstanie Pythona jako wieloparadygmatycznego języka programowania sięga roku 1991. Od tego czasu programiści nieustannie dostosowywali szkieletowy szkielet Pythona, aby dopasować go do szeregu specyficznych potrzeb użytkownika, takich jak nauka o danych oraz rozwój sieci i urządzeń mobilnych.

Teraz wszyscy wiemy, że próba zrozumienia nieczytelnego pisma ręcznego jest niezwykle trudna i często irytująca. Podobnie nieczytelny i nieustrukturyzowany kod jest prosty i nie do zaakceptowania w świecie programowania. W tym miejscu na ratunek programiście przychodzi pojęcie PEP lub Python Enhancement Proposal. PEP to the Python Community jest podobny do wspólnego Dokumentu Google dla ogółu społeczeństwa.

Jest to stale aktualizowany opisowy mandat, dzięki któremu społeczność programistów Pythona jest kompleksowo informowana o funkcjach i aktualizacjach poprawiających czytelność kodu. Guido van Rossum, Barry Warsaw i Nick Coghlan w 2001 roku określają PEP 8 jako kod stylu Pythona.

Co to jest wcięcie?

Wiadomo przede wszystkim, że Python jest językiem proceduralnym, a zatem wcięcie w Pythonie służy do segregowania pojedynczego kodu na identyfikowalne grupy funkcjonalnie podobnych instrukcji. Większość języków programowania, w tym C, C++ i JAVA, używa nawiasów klamrowych „{}” do zdefiniowania bloku kodu. Python oznacza odstępstwo od tego projektu i preferuje stosowanie wcięć.

Składnia wcięcia

Zgodnie z konwencjami nakreślonymi przez etykę białych znaków PEP 8, każda nowa iteracja (tj. blok kodu) powinna zaczynać się od wcięcia, a koniec kodu powinien znajdować się w pierwszym wierszu, który nie jest wcięty. Powszechną praktyką wykonywania wcięć są cztery spacje lub pojedynczy znak tabulacji, przy czym obszary są w dużej mierze preferowane w stosunku do tabulatorów.

Jak wspomniano wcześniej, wiodące białe znaki na początku wiersza określają poziom wcięcia wiersza. Aby pogrupować instrukcje dla konkretnego bloku kodu, będziesz musiał zwiększyć poziom wcięcia. Podobnie, aby zamknąć grupowanie, będziesz musiał zmniejszyć poziom wcięcia.

Kasa: 42 ekscytujące tematy i pomysły dotyczące projektów w Pythonie

Przyczyny błędu wcięcia w Pythonie

„Błąd wcięcia: oczekiwano wcięcia bloku” nie rozróżnia użytkowników. Niezależnie od tego, czy jesteś nowicjuszem w programowaniu w Pythonie, czy doświadczonym programistą, z pewnością stanie się to w pewnym momencie. W Pythonie, ponieważ cały kod, który wpisujesz, jest uporządkowany za pomocą poprawnych białych znaków, jeśli w jakimkolwiek wystąpieniu w kodzie, masz niepoprawne wcięcie, cały kod nie zostanie uruchomiony, a interpreter zwróci funkcję błędu. Aby dokładnie wiedzieć, na co zwracać uwagę, poniżej wymieniono niektóre z najczęstszych przyczyn błędu wcięcia w Pythonie:

1. Jednoczesne użycie tabulatorów i spacji podczas kodowania. Można argumentować, że teoretycznie zarówno tabulatory, jak i spacje służą temu samemu celowi, ale rozważmy to z perspektywy interpretatora. Jeśli spacje i tabulatory są używane niekonsekwentnie i zamiennie, tworzy to niejednoznaczność. Spowoduje to, że interpreter pomyli się, jakiej zmiany użyć, i ostatecznie zwróci błąd wcięcia w Pythonie.

2. Nieumyślnie umieściłeś wcięcie w niewłaściwym miejscu lub brak tabulatorów lub spacji między wierszami kodu. Ponieważ Python przestrzega ścisłych wytycznych dotyczących porządkowania pisanych kodów, wcięcie w niewłaściwym miejscu nieuchronnie zwróci błąd. Na przykład pierwszy wiersz Pythona nie powinien być wcięty.

3. Czasami, podczas kończenia zaległego, wyjątkowo długiego programu, możesz nieświadomie przegapić wcięcia funkcji instrukcji złożonych, takich jak for, while i if. To ponownie doprowadzi do błędu wcięcia. Jest to najbardziej podstawowa potrzeba tworzenia wcięć podczas używania Pythona i musi być rygorystycznie ćwiczona, aby ją opanować.

4. Jeśli zapomniałeś użyć wcięcia podczas pracy z funkcjami zdefiniowanymi przez użytkownika lub różnymi klasami, prawdopodobnie pojawi się błąd.

Jak rozwiązać błąd wcięcia w Pythonie?

1. Sprawdź, czy nie ma niewłaściwych białych spacji lub tabulatorów. Niestety nie ma szybkiego rozwiązania błędu wcięcia. Ponieważ kod należy do Ciebie, faktem jest, że będziesz musiał ocenić każdą linię, aby indywidualnie zidentyfikować błędne instancje. Ponieważ jednak wiersze kodu są ułożone w bloki, proces jest stosunkowo prosty. Na przykład, jeśli użyłeś instrukcji 'if' w określonej kolejności, możesz sprawdzić krzyżowo, czy pamiętałeś o wcięciu następnej linii.

2. Upewnij się, że wcięcie dla określonego bloku pozostaje takie samo w całym kodzie, nawet jeśli w środku zostanie wprowadzony nowy blok. Sprawdź, czy nie ma niespójności we wcięciach.

Jeśli powyższe rozwiązania ręczne nie zadziałały i masz trudności z ustaleniem, gdzie przegapiłeś wcięcie, wykonaj następujące kroki:

3. Przejdź do ustawień edytora kodu i włącz opcję, która ma wyświetlać tabulatory i spacje. Po włączeniu tej funkcji zobaczysz pojedyncze małe kropki, gdzie każda kropka reprezentuje tabulator/białą spację. Jeśli zauważysz, że brakuje kropli tam, gdzie nie powinno być, oznacza to, że ta linia prawdopodobnie zawiera błąd wcięcia.

4. Użyj wbudowanego interpretera Pythona Indent Guide. Prawdopodobnie ta metoda jest wysoce nieefektywna w przypadku kilku wierszy kodu. Ponieważ jednak prowadzi przez każdą linię i pokazuje dokładnie, gdzie leży błąd, jest to najpewniejszy sposób na znalezienie i naprawienie wszystkich błędów.

Przeczytaj także: 12 najlepszych fascynujących aplikacji Pythona w prawdziwym świecie

Korzyści z wcięcia

Czytelność i spójność są niezbędne dla każdego dobrego kodu. Zgodnie z białą przestrzenią PEP 8, etyka nie powinna zatem podlegać negocjacjom. Logicznie uzasadnia twój kod, przyczyniając się w ten sposób do przyjemniejszego kodowania. Dodatkowo, jeśli zastosujesz się do tej stylistycznej wytycznej, w której de facto zależy Ci na czytelności, osoby, które nie są Tobie nieznane, ale są zainteresowane Twoją pracą, z łatwością zrozumieją Twój kod.

Wady wcięcia

  • Jeśli kod jest duży, a wcięcie jest uszkodzone, naprawa błędów wcięcia może być żmudna. Zwykle dzieje się tak, gdy kod jest kopiowany ze źródła online, dokumentu Word lub pliku PDF.
  • Popularne języki programowania zwykle używają nawiasów klamrowych do wcięć. Dla programistów, którzy dopiero zaczynają używać Pythona, dostosowanie się do idei używania białych znaków do wcięć może być trudne.

Podsumowując

Wszystko, co znajduje się między tobą a dobrze napisanym kodem, to wcięcie, a wszystko, co znajduje się między tobą, twoim dobrze napisanym kodem i jego bezproblemowym wykonaniem, jest błędem wcięcia. Teraz wszyscy ludzie popełniają błędy. Wszyscy programiści to ludzie. Dlatego wszyscy programiści popełniają błędy. Ale błąd wcięcia można łatwo rozwiązać. Wszystko, co musisz zrobić, to oddychać i zająć swoją przestrzeń.

Mam nadzieję, że wiele się nauczysz pracując nad tymi projektami w Pythonie. Jeśli jesteś ciekawy, jak uczyć się nauki o danych, aby być na czele szybkiego postępu technologicznego, sprawdź program Executive PG w dziedzinie nauki o danych upGrad i IIIT-B i podnieś swoje umiejętności na przyszłość.

Jakie błędy mogę uzyskać z powodu wcięć w Pythonie?

Python określa, kiedy bloki kodu zaczynają się i kończą, patrząc na spację na początku wiersza. Możesz napotkać następujące błędy wcięcia:
1. Nieoczekiwane wcięcie — ten wiersz kodu ma na początku więcej spacji niż poprzedni, ale poprzedzający go nie rozpoczyna podbloku. W bloku wszystkie wiersze kodu muszą zaczynać się tym samym ciągiem znaków odstępu.
2. Unindent nie odpowiada żadnemu zewnętrznemu poziomowi wcięcia — ten wiersz kodu zawiera mniej spacji na początku niż poprzedni, ale nie pasuje również do żadnego innego bloku.
3. Oczekiwano bloku z wcięciem - Ten wiersz kodu zaczyna się taką samą liczbą spacji jak poprzedni, ale poprzedni wiersz miał rozpoczynać blok (np. instrukcja if/while/for, definicja funkcji).

Jak naprawić niespójne tabulatory i spacje we wcięciach Spyder?

Tabulatory i spacje to dwa oddzielne znaki, które pojawiają się na ekranie jako białe znaki. Problem polega na tym, że nie ma zgody co do tego, jak duży powinien być znak tabulacji, dlatego niektórzy redaktorzy wyświetlają go jako zajmujący 8 spacji, inni jako 4 spacje, a inni jako 2, a także można go dostosować.
Kiedy kodujesz, ale jedna linia jest wcięta tabulatorem, a druga spacjami, Python wyrzuca błąd, mimo że wydaje się to dobry w edytorze (ale nie będzie wyglądał dobrze, jeśli podwoisz szerokość tabulacji; teraz linie tabulacji zostaną wcięte na dwa poziomy).
Aby uniknąć tego problemu, przejdź do opcji edytora tekstu i włącz funkcję konwertowania tabulatorów na spacje , która zastępuje znak tabulacji n znakami spacji, gdzie n jest szerokością tabulatora używaną przez edytor.

Jak pokazujesz wcięcia na Spyder?

Wybierz swój kod i naciśnij klawisz Tab lub Shift + Tab, aby wciąć lub cofnąć wcięcie. Inne narzędzia do zmiany kodu można znaleźć w sekcji Edycja.