Wcięcia są istotną cechą czytelnego, łatwego w utrzymaniu kodu, ale niewiele języków wymusza to. Python jest jednym z tych nielicznych.

Jeśli Python stwierdzi, że Twój kod ma nieprawidłowe wcięcie, po uruchomieniu kodu zobaczysz komunikat „IndentationError”. Ale jak to naprawić i jak temu zapobiec w przyszłości?

Dlaczego w Pythonie pojawia się błąd IndentationError?

Błąd „IndentationError: oczekiwano wciętego bloku” to coś, co prawdopodobnie zobaczysz, gdy po raz pierwszy zaczniesz używać Pythona, zwłaszcza jeśli pochodzisz z innego języka programowania.

ten specyfika reguł wcięć Pythona są złożone, ale sprowadzają się do jednego: wcięcia kodu w blokach. Dotyczy to funkcji, klauzul if i tak dalej. Oto przykład niepoprawnie sformatowanego kodu Pythona:

fname = "Gauraw"
lname = "Syjal"

if fname == "Gaurav" i lname == "Siyal":
print("Jesteś Gauravem")
w przeciwnym razie:
print("Jesteś kimś innym")

Gdy spróbujesz uruchomić powyższy kod, otrzymasz komunikat podobny do tego:

 Plik "tmp.py", wiersz 5
print("Jesteś Gauravem")
^
IndentationError: oczekiwano wciętego bloku
instagram viewer

Zamiast tego należy dodać tabulator lub serię spacji na początku dwóch wierszy reprezentujących bloki:

fname = "Gauraw"
lname = "Syjal"

if fname == "Gaurav" i lname == "Siyal":
print("Jesteś Gauravem")
w przeciwnym razie:
print("Jesteś kimś innym")

Jeśli wcinasz spacje, możesz użyć dowolnej liczby, o ile jesteś spójny i jednoznaczny. Większość programistów używa dwóch, czterech lub ośmiu spacji.

Typowe przypadki prawidłowego wcięcia

Oto kilka przykładów, do których możesz się odwołać, aby upewnić się, że masz prawidłowe wcięcia.

Jeśli stwierdzenia

Wcięcie bloku następującego po Jeśli oświadczenie:

if moja_nazwa == "Gaurav":
print("Nazywam się Gaurav")
zwróć Prawda

Funkcje

Ciało funkcji to blok. Powinieneś wciąć ten cały blok:

def magic_number():
wynik = 42
zwróć wynik

drukuj magic_number()

Dla pętli

Podobnie jak w przypadku instrukcji if, treść pętli for powinna mieć wcięcie o jeden poziom większe niż wiersz rozpoczynający się od dla słowo kluczowe:

dla i w zakresie (10):
drukuj (i)

Upewnij się, że Twój edytor poprawnie wcisnął

Większość nowoczesnych edytorów tekstu obsługuje automatyczne wcinanie kodu. Jeśli edytor określi, że wiersz kodu powinien być wcięty, automatycznie doda tabulatory lub spacje.

w Spyder, opcje wcięć są dostępne pod Narzędzia > Preferencje > Kod źródłowy:

Jeśli używasz vima, możesz edytuj swoją konfigurację i użyj automatyczne wcięcie i powiązane opcje konfiguracji wcięć. Na przykład oto typowa konfiguracja:

ustaw automatyczne wcięcie
ustaw rozwińtab
ustaw tabulator=4
ustaw softtabstop=4
ustaw szerokość przesuwu=4

Spowoduje to automatyczne wcięcie przy użyciu czterech spacji.

Jednak żaden edytor nie może zapewnić kuloodpornego automatycznego wcięć. Nadal musisz zwracać uwagę na wcięcia, ponieważ niektóre przypadki są niejednoznaczne:

W tym przykładzie finał powrót instrukcja jest wcięta o jeden poziom od sygnatury funkcji w pierwszym wierszu. Jeśli jednak ustawisz kursor na końcu przedostatniej linii i naciśniesz Wchodzić, może się zdarzyć jedna z dwóch rzeczy. Twój redaktor może ustawić kursor:

  1. Dwa poziomy wcięcia, wyrównane do „res =...”
  2. Jedno wcięcie na poziomie, wyrównane do „else:”

Twój edytor nie może rozróżnić tych dwóch przypadków: możesz chcieć dodać więcej kodu w bloku if/else lub nie.

Obsługa błędu „Oczekiwano wcięcia bloku” Pythona

Błędy są w Pythonie codziennością, tak jak w każdym innym języku programowania. Surowe reguły Pythona dotyczące wcięć mogą dodać nowy rodzaj błędu do przemyślenia, ale są one przydatne. Właściwie wcięty kod jest bardziej czytelny i spójny we wszystkich zespołach.

Błąd wcięcia nie jest jedynym, z którym będziesz musiał się zmierzyć. Dobrze jest zapoznać się z typowymi błędami Pythona, aby wiedzieć, jak je debugować i co zrobić, aby je naprawić.

Co oznacza błąd „List index out of range” w Pythonie?

Czytaj dalej

DzielićĆwierkaćDzielićE-mail

Powiązane tematy

  • Programowanie
  • Pyton

O autorze

Gaurav Siyal (64 opublikowane artykuły)

Gaurav Siyal ma dwuletnie doświadczenie w pisaniu dla szeregu firm zajmujących się marketingiem cyfrowym i dokumentach dotyczących cyklu życia oprogramowania.

Więcej od Gaurava Siyala

Zapisz się do naszego newslettera

Dołącz do naszego newslettera, aby otrzymywać porady techniczne, recenzje, bezpłatne e-booki i ekskluzywne oferty!

Kliknij tutaj, aby zasubskrybować