Komentarze są dla ludzi
Python ignoruje komentarze. Na tym polega cała sztuczka. Wszystko, co oznaczysz jako komentarz, jest niewidoczne dla interpretera: istnieje wyłącznie dla osoby czytającej kod, czyli zwykle dla ciebie za pół roku, gdy zaczniesz się zastanawiać, o co wtedy chodziło.
Mimo to komentarz, który tylko powtarza to, co kod oczywiście robi, nie jest wart pisania. Najlepsze komentarze wyjaśniają dlaczego: ograniczenie, obejście, decyzję, której nie widać w samym kodzie. Kod już mówi, co się dzieje.
Komentarze jednoliniowe z #
Podstawowa forma to #, a po nim twoja notatka:
Krótki komentarz możesz też dopisać na końcu linii. Zgodnie z konwencją zostaw przed # co najmniej dwie spacje:
Python traktuje # w dowolnym miejscu poza napisem jako początek komentarza do końca linii. Ważne jest to "poza napisem": # w cudzysłowie to zwykły znak.
#section-2 w napisie jest częścią adresu URL. Python przechodzi w tryb "komentarza" dopiero przy # po zamknięciu napisu.
Zakomentowanie wielu linii
Python nie ma komentarza blokowego /* */. Żeby pominąć kilka linii, postaw # na początku każdej:
Prawie nigdy nie wpisuje się tych # ręcznie. Każdy przyzwoity edytor ma skrót "przełącz komentarz linii", który dodaje albo usuwa # na każdej zaznaczonej linii:
- VS Code: Cmd + / (macOS) albo Ctrl + / (Windows/Linux)
- PyCharm: Cmd + / albo Ctrl + /
- Vim: zależy od wtyczek;
vim-commentaryprzypisujegccdo pojedynczej linii igcdo zaznaczenia.
Naucz się raz skrótu w swoim edytorze, a "zakomentowanie tego bloku, żeby coś wypróbować" stanie się operacją na jedno naciśnięcie klawisza.
Sztuczka z potrójnym cudzysłowem (i dlaczego to nie jest prawdziwy komentarz)
Czasem zobaczysz taki kod:
Technicznie to wyrażenie z napisem, które zostaje odrzucone. Python je parsuje, oblicza i wyrzuca wynik. Zachowuje się jak komentarz, ale nim nie jest. Stylistycznie to dobry pomysł tylko w jednym konkretnym miejscu: jako docstring.
Docstringi: jedyne miejsce na potrójny cudzysłów
Docstring to napis w potrójnym cudzysłowie umieszczony jako pierwsza instrukcja funkcji, klasy albo modułu. Python rozpoznaje go jako dokumentację i udostępnia w trakcie działania przez funkcję help() i atrybut __doc__:
Docstringi są przydatne z dwóch powodów:
- Narzędzia takie jak IDE,
help()i generatory dokumentacji czytają je automatycznie. Komentarz nad funkcją nic takiego nie daje. - Opisują funkcję w miejscu wywołania: gdy ktoś najedzie kursorem na
discount(...)w edytorze, docstring pojawia się jako podpowiedź.
Istnieje konwencja (PEP 257) dotycząca zawartości docstringa: jednozdaniowe podsumowanie w pierwszej linii, pusta linia, a potem dłuższy opis, jeśli jest potrzebny. Pierwszego dnia nie przejmuj się dokładnym formatem: zwykłe jedno zdanie i tak jest dużo lepsze niż brak docstringa.
Co naprawdę mówią dobre komentarze
Kilka wskazówek, które oszczędzą wielu zmartwień w przyszłości:
- Opisuj raczej dlaczego niż co.
# Loop over the usersto szum;# Retry on 503 - Redis sometimes dies mid-deployto złoto. - Aktualizuj komentarze, gdy zmieniasz kod. Błędny komentarz jest gorszy niż żaden. Nieaktualne komentarze aktywnie wprowadzają w błąd przyszłych czytelników.
- Nie zostawiaj zakomentowanego kodu. Jeśli go nie potrzebujesz, usuń go. System kontroli wersji pamięta. Plik usiany zakomentowanymi blokami szybko traci wiarygodność.
- Pomijaj oczywistości.
x = x + 1 # increment xniczego nie wnosi.
Podsumowanie
Komentarze nic nie kosztują i łatwo je pominąć. Sięgaj po nie, gdy zostawiasz notatkę, za którą czytelnik ci podziękuje: subtelny powód, dla którego coś działa, link do zgłoszenia, ostrzeżenie o przypadku brzegowym. Używaj docstringów, gdy definiujesz funkcję albo klasę. Poza tym niech mówią za ciebie jasne nazwy i małe funkcje.
Masz już wszystko, czego potrzebujesz, żeby czytać i pisać plik Pythona. W następnym rozdziale język naprawdę zaczyna działać: zmienne, typy danych i wartości, które Python potrafi przechowywać.
Najczęściej zadawane pytania
Jak napisać komentarz w Pythonie?
Postaw # na początku linii (albo w dowolnym jej miejscu), a wszystko po # w tej linii będzie komentarzem. Python podczas uruchamiania kodu całkowicie ignoruje komentarze.
Jak zakomentować wiele linii w Pythonie?
Python nie ma osobnej składni komentarza wieloliniowego. Postaw # na początku każdej linii, którą chcesz pominąć. Większość edytorów ma skrót klawiszowy, który przełącza # na wszystkich zaznaczonych liniach naraz, na przykład Cmd/Ctrl + / w VS Code.
Czy napisy w potrójnym cudzysłowie to komentarze w Pythonie?
Nie do końca. Napis w potrójnym cudzysłowie, który nie jest do niczego przypisany, w trakcie działania zachowuje się jak komentarz, ale Python nadal parsuje go jako napis. Ten wzorzec służy głównie do docstringów, czyli dokumentacji funkcji, klas i modułów, a nie do zwykłych komentarzy.