7.1 Znaczenie wcięć
Czasami musisz zgrupować kilka poleceń w grupę. Taka grupa nazywana jest blokiem poleceń lub po prostu blokiem kodu. W Pythonie bloki kodu są określane za pomocą wcięć, co sprawia, że struktura programu jest czysta i czytelna.
W przeciwieństwie do wielu innych języków programowania, gdzie bloki kodu są oznaczone nawiasami lub słowami kluczowymi, Python używa wcięć do wydzielania sekwencji instrukcji, co nazywane jest strukturą blokową.
Teoretycznie wcięcia mogą być wykonane za pomocą spacji lub tabulacji. Jednak PEP 8, oficjalny przewodnik stylu kodu w Pythonie, zaleca używanie 4 spacji dla jednego poziomu wcięcia. Ważne jest, aby stosować jednolity styl wcięć w całym kodzie.
Struktura bloków:
Blok kodu zaczyna się od instrukcji, po której następuje dwukropek (na przykład if
, for
, while
, def
, class
) i wcięcie na następnej linii. Wszystkie instrukcje z tym samym poziomem wcięcia są uznawane za część jednego bloku.
Wcięcia wpływają na to, jak Python interpretuje kod. Nieprawidłowe użycie wcięć może prowadzić do błędu IndentationError lub zmienić logikę programu.
7.2 Równa ilość wcięć
Bardzo ważne jest, aby bloki kodu miały równą ilość wcięć. Dlatego bardzo nie zaleca się mieszania tabulacji i spacji. Niektóre edytory wyświetlają tabulację jako 8 spacji, inne jako 4. To może prowadzić do błędów.
PyCharm rozwiązuje ten problem w prosty sposób: wstawia 4 spacje za każdym razem, gdy naciskasz przycisk TAB na klawiaturze. Brak tabulacji to brak problemów.
Przykład:
Niepoprawnie | Poprawnie |
|
|
Kiedy jest kilka zagnieżdżonych if-ów, łatwo popełnić błąd:
Niepoprawnie | Poprawnie |
|
|
Musisz dokładnie wiedzieć, do którego if
należy else
, inaczej ryzykujesz niepoprawne ustawienie wcięć i uzyskanie programu, który robi coś zupełnie innego, niż chciałeś.
Szczególnie często ten błąd popełniają nowicjusze, kiedy decydują się umieścić gotowy kawałek kodu pod if
. Lub przenieść blok kodu z jednego miejsca do innego, gdzie powinno być inne ilość wcięć.
Używaj PyCharm: to IDE doskonale zna te problemy i automatycznie dodaje odpowiednie ilości wcięć przy przenoszeniu kodu.
GO TO FULL VERSION