OK, wiem, że ciągi potrójnych cudzysłowów mogą służyć jako komentarze wielowierszowe. Na przykład,
"""Hello, I am a
multiline comment"""
i
'''Hello, I am a
multiline comment'''
Ale technicznie rzecz biorąc są to ciągi, prawda?
Poszukałem go i przeczytałem przewodnik po stylu Python, ale nie byłem w stanie znaleźć technicznej odpowiedzi na pytanie, dlaczego nie ma formalnej implementacji multilinii, / * * / komentarzy. Nie mam problemu z użyciem potrójnych cytatów, ale jestem trochę ciekawy, co doprowadziło do tej decyzji projektowej.
if False:
kodOdpowiedzi:
Wątpię, aby uzyskać lepszą odpowiedź niż: „Guido nie odczuwał potrzeby komentowania wielu wierszy”.
Guido napisał o tym na Twitterze :
źródło
if False:
przed kodem, który należy wyłączyć.if False
jest lepiej. Osiąga dokładnie to samo, a jednocześnie jest mniej wyraźny (ponieważ na pierwszy rzut oka nie jest tak oczywiste, że blok kodu został wyłączony).Komentarze wieloliniowe można łatwo łamać. Co jeśli masz następujące elementy w prostym programie kalkulatora?
Spróbuj to skomentować za pomocą komentarza wieloliniowego:
Ups, Twój ciąg zawiera ogranicznik komentarza końcowego.
źródło
#:
i użycie wcięcia, aby pokazać, kiedy komentarz się skończy. Jest czysty, spójny i doskonale radzi sobie z zagnieżdżaniem.Tekst potrójny NIE powinien być uważany za komentarze wieloliniowe; Zwyczajowo są one docstrings . Powinny opisywać, co robi Twój kod i jak go używać, ale nie w przypadku komentowania bloków kodu.
Według Guido komentarze wieloliniowe w Pythonie są po prostu ciągłymi komentarzami jednowierszowymi (wyszukaj „komentarze blokowe”).
Aby skomentować bloki kodu, czasami używam następującego wzorca:
źródło
V}>>
To prawdopodobnie wraca do podstawowej koncepcji, że powinien istnieć jeden oczywisty sposób wykonania zadania. Dodatkowe style komentarzy dodają niepotrzebne komplikacje i mogą zmniejszyć czytelność.
źródło
#
.Cóż, potrójne cudzysłowy są używane jako komentarze wielowierszowe w dokumentach. I # komentarze są używane jako komentarze wbudowane i ludzie przyzwyczajają się do tego.
Większość języków skryptowych również nie ma komentarzy wielowierszowych. Może to jest przyczyna?
Zobacz PEP 0008 , sekcja Komentarze
I sprawdź, czy Twój edytor Python oferuje skrót klawiszowy do komentowania bloków. Emacs obsługuje to, podobnie jak Eclipse, prawdopodobnie większość porządnych IDE.
źródło
Z Zen Pythona :
Powinien być jeden - a najlepiej tylko jeden - oczywisty sposób na zrobienie tego.
źródło
Osobiście mój styl komentowania mówi, że Java jest jak
Tak więc posiadanie komentarzy tylko w jednym wierszu nie jest takie złe, jeśli twój styl jest typowy dla poprzedniego przykładu, ponieważ w porównaniu miałbyś
VB.NET jest także językiem z komentarzami tylko jednowierszowymi, a ja osobiście uważam to za irytujące, ponieważ komentarze wyglądają mniej lubię komentarze, a bardziej jak jakiś cytat
Komentarze zawierające tylko jedną linię kończą się mniejszym zużyciem znaków niż komentarze zawierające wiele wierszy, a może jakieś unikatowe znaki w wyrażeniu regularnym są mniej prawdopodobne? Ale raczej zgadzam się z Nedem.
źródło
Aby skomentować blok kodu w IDE Pycharm :
źródło
Aby to osiągnąć, użyj bloku komentarza lub wyszukaj i zamień (s / ^ / # / g) w edytorze.
źródło
Rozwiązałem to, pobierając makro do mojego edytora tekstu (TextPad), który pozwala mi wyróżniać linie, a następnie wstawia # na pierwszym wierszu. Podobne makro usuwa znaki #. Niektórzy mogą zapytać, dlaczego multiline jest konieczne, ale przydaje się, gdy próbujesz „wyłączyć” blok kodu na potrzeby debugowania.
źródło
Dla każdego, kto szuka w Pythonie komentarzy zawierających wiele wierszy - użycie formatu potrójnej wyceny może mieć pewne problematyczne konsekwencje, ponieważ właśnie nauczyłem się na własnej skórze. Rozważ to:
Komentarz składający się z wielu wierszy zostanie schowany do następnego ciągu, co zepsuje
'species'
klucz. Lepiej użyć tylko#
do komentowania.źródło
Ponieważ konwencja # jest powszechna i naprawdę nie ma nic, co można zrobić z komentarzem wieloliniowym, czego nie można zrobić z komentarzem #-podpis. To historyczny wypadek, jak pochodzenie
/* ... */
komentarzy wracających do PL / I,źródło
Załóżmy, że zostały po prostu uznane za niepotrzebne. Ponieważ tak łatwo jest pisać
#a comment
, komentarze wielowierszowe mogą składać się z wielu komentarzy jednowierszowych.Z drugiej strony, w przypadku HTML potrzebne są multilinery. Trudniej jest pisać dalej
<!--comments like this-->
.źródło
To tylko przypuszczenie ... ale
Ponieważ są łańcuchami, mają pewną wartość semantyczną (kompilator ich nie pozbywa), dlatego sensowne jest, aby były używane jako ciągi znaków. W rzeczywistości stają się częścią AST , więc wyodrębnianie dokumentacji staje się łatwiejsze.
źródło
Poza tym komentarze wieloliniowe są suką . Przykro mi to mówić, ale niezależnie od języka nie używam ich do celów innych niż debugowanie. Powiedz, że masz taki kod:
Następnie dowiadujesz się, że w kodzie jest coś, czego nie można naprawić za pomocą debugera, więc zacznij ręcznie debugować to, komentując coraz mniejsze fragmenty kodu za pomocą tych komentarzy wielowierszowych. To dałoby wtedy funkcję:
To jest naprawdę irytujące.
źródło
/*
komentarzy w stylu.Komentarze wielowierszowe przy użyciu IDLE na:
Mac OS X , po wybraniu kodu, skomentuj blok kodu za pomocą Ctrl+ 3i odkomentuj za pomocą Ctrl+ 4.
Windows , po wybraniu kodu, skomentuj blok kodu za pomocą Ctrl+ Alt+ 3i odkomentuj za pomocą Ctrl+ At+ 4.
źródło
Pamiętam, jak czytałem o jednym facecie, który umieściłby swoje komentarze wieloliniowe w potrójnej zmiennej:
Zajmuje to trochę pamięci, ale zapewnia funkcję komentowania wielu wierszy, a ponadto większość edytorów podświetli dla ciebie składnię :)
Łatwo jest również skomentować kod, po prostu owijając go
i
źródło
x =
i nie zajmie to żadnej pamięci.