Jak udokumentować metody z parametrami przy użyciu ciągów dokumentacji Pythona?
EDYCJA: PEP 257 podaje ten przykład:
def complex(real=0.0, imag=0.0):
"""Form a complex number.
Keyword arguments:
real -- the real part (default 0.0)
imag -- the imaginary part (default 0.0)
"""
if imag == 0.0 and real == 0.0: return complex_zero
...
Czy jest to konwencja używana przez większość programistów Pythona?
Keyword arguments:
<parameter name> -- Definition (default value if any)
Spodziewałem się czegoś bardziej formalnego, np
def complex(real=0.0, imag=0.0):
"""Form a complex number.
@param: real The real part (default 0.0)
@param: imag The imaginary part (default 0.0)
"""
if imag == 0.0 and real == 0.0: return complex_zero
...
Środowisko : Python 2.7.1
python
documentation
documentation-generation
David Andreoletti
źródło
źródło
Odpowiedzi:
Na podstawie mojego doświadczenia wynika, że NumPy konwencje docstring (PEP257 rozszerzeniem) są najpowszechniej rozprzestrzeniania następnie konwencje, które są również wspierane przez narzędzia, takie jak Sfinks .
Jeden przykład:
źródło
SEVERE: Unexpected section title
- czy znasz jakiś sposób, aby Sfinks był z tego szczęśliwszy?Description
. Sprawdziłem dokumentację numpy, ponieważ od razu zauważyłem i pomyślałem: „Poczekaj chwilę, dlaczego to trzy spacje? To dziwne. Kto użyłby trzech spacji?”Ponieważ ciągi dokumentacyjne są dowolne, tak naprawdę zależy to od tego, czego używasz do analizowania kodu w celu wygenerowania dokumentacji API.
Poleciłbym zapoznać się ze znacznikami Sphinx , ponieważ są one powszechnie używane i stają się de facto standardem do dokumentowania projektów w Pythonie, po części ze względu na doskonałą usługę readthedocs.org . Aby sparafrazować przykład z dokumentacji Sphinx jako urywek Python:
Ten znacznik obsługuje odsyłacze między dokumentami i nie tylko. Zauważ, że dokumentacja Sphinx używa (np.),
:py:attr:
Podczas gdy możesz po prostu użyć:attr:
podczas dokumentowania z kodu źródłowego.Oczywiście istnieją inne narzędzia do dokumentowania interfejsów API. Jest bardziej klasyczny Doxygen, który używa
\param
poleceń, ale nie są one specjalnie zaprojektowane do dokumentowania kodu Pythona, tak jak Sphinx.Zwróć uwagę, że jest tutaj podobne pytanie z podobną odpowiedzią ...
źródło
list
.Konwencje:
Przybory:
Aktualizacja: Od Pythona 3.5 możesz używać podpowiedzi typu, które są zwartą, czytelną maszynowo składnią:
Główną zaletą tej składni jest to, że jest definiowana przez język i jest jednoznaczna, dzięki czemu narzędzia takie jak PyCharm mogą z łatwością z niej skorzystać.
źródło
Ciągi dokumentacyjne Pythona są dowolne , możesz je dokumentować w dowolny sposób.
Przykłady:
Istnieją pewne konwencje, ale Python nie narzuca żadnej z nich. Niektóre projekty mają swoje własne konwencje. Niektóre narzędzia do pracy z dokumentami również są zgodne z określonymi konwencjami.
źródło
Jeśli planujesz używać Sphinx do dokumentowania swojego kodu, jest on w stanie tworzyć ładnie sformatowane dokumenty HTML dla twoich parametrów z ich funkcją „podpisów”. http://sphinx-doc.org/domains.html#signatures
źródło
Główny nurt jest, jak już wskazały inne odpowiedzi, prawdopodobnie idąc drogą Sfinksa , abyś mógł użyć Sfinksa do późniejszego wygenerowania tych wymyślnych dokumentów.
Biorąc to pod uwagę, osobiście od czasu do czasu używam stylu komentowania w tekście.
Jeszcze jeden przykład, z kilkoma drobnymi szczegółami udokumentowanymi w tekście:
Korzyści (jak @ mark-horvath wskazał już w innym komentarzu) to:
Niektórzy mogą pomyśleć, że ten styl wygląda „brzydko”. Ale powiedziałbym, że „brzydki” to subiektywne słowo. Bardziej neutralnym sposobem jest stwierdzenie, że ten styl nie jest głównym nurtem, więc może wyglądać mniej znajomo, a przez to mniej komfortowo. Ponownie „wygodne” jest również subiektywnym słowem. Chodzi o to, że wszystkie opisane powyżej korzyści są obiektywne. Nie możesz ich osiągnąć, jeśli podążasz standardową drogą.
Miejmy nadzieję, że któregoś dnia w przyszłości pojawi się narzędzie do generowania dokumentów, które również będzie obsługiwać taki styl wbudowany. To będzie napędzać adopcję.
PS: Ta odpowiedź wynika z moich własnych preferencji dotyczących używania komentarzy w tekście, kiedy tylko uznam to za stosowne. Używam tego samego stylu wbudowanego do dokumentowania słownika .
źródło
Opierając się na odpowiedzi na wskazówki dotyczące typu ( https://stackoverflow.com/a/9195565/2418922 ), która zapewnia lepszy uporządkowany sposób dokumentowania typów parametrów, istnieje również ustrukturyzowany sposób dokumentowania zarówno typu, jak i opisów parametrów:
przykład zaczerpnięty z: https://pypi.org/project/autocommand/
źródło
Dokumenty są przydatne tylko w środowiskach interaktywnych, np. Powłoce Pythona. Podczas dokumentowania obiektów, które nie będą używane interaktywnie (np. Obiekty wewnętrzne, wywołania zwrotne frameworka), równie dobrze możesz używać zwykłych komentarzy. Oto styl, którego używam do zawieszania komentarzy z wcięciem przy elementach, każdy w osobnym wierszu, więc wiesz, że komentarz dotyczy:
Nie możesz tego zrobić z dokumentami.
źródło