Como documentar métodos com parâmetros usando as strings de documentação do Python?
EDIT: PEP 257 dá este exemplo:
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
...
Essa é a convenção usada pela maioria dos desenvolvedores de Python?
Keyword arguments:
<parameter name> -- Definition (default value if any)
Eu esperava algo um pouco mais formal, como
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
...
Ambiente : Python 2.7.1
python
documentation
documentation-generation
David Andreoletti
fonte
fonte
Respostas:
Com base na minha experiência, as convenções numpy docstring (superconjunto PEP257) são as convenções seguidas mais amplamente difundidas e também suportadas por ferramentas, como o Sphinx .
Um exemplo:
fonte
SEVERE: Unexpected section title
- você conhece alguma maneira de tornar o Sphinx mais feliz com isso?Description
. Verifiquei a documentação numpy, porque imediatamente notei e pensei "Espere um segundo, por que são três espaços? Isso é estranho. Quem usaria três espaços?"Como as docstrings são de formato livre, isso realmente depende do que você usa para analisar o código e gerar a documentação da API.
Eu recomendaria se familiarizar com a marcação Sphinx , pois é amplamente usada e está se tornando o padrão de fato para documentar projetos Python, em parte devido ao excelente serviço readthedocs.org . Para parafrasear um exemplo da documentação Esfinge como um trecho Python:
Essa marcação oferece suporte à referência cruzada entre documentos e muito mais. Observe que a documentação do Sphinx usa (por exemplo),
:py:attr:
enquanto você pode apenas usar:attr:
ao documentar a partir do código-fonte.Naturalmente, existem outras ferramentas para documentar APIs. Existe o Doxygen mais clássico, que usa
\param
comandos, mas esses não foram projetados especificamente para documentar o código Python como o Sphinx.Observe que há uma pergunta semelhante com uma resposta semelhante aqui ...
fonte
list
.Convenções:
Ferramentas:
Atualização: Desde o Python 3.5, você pode usar dicas de tipo, uma sintaxe compacta e legível por máquina:
A principal vantagem dessa sintaxe é que ela é definida pelo idioma e não é ambígua, de modo que ferramentas como o PyCharm podem facilmente tirar vantagem disso.
fonte
As strings de documentos python são de formato livre , você pode documentá-lo da maneira que desejar.
Exemplos:
Agora, existem algumas convenções, mas o python não aplica nenhuma delas. Alguns projetos têm suas próprias convenções. Algumas ferramentas para trabalhar com documentos também seguem convenções específicas.
fonte
Se você planeja usar o Sphinx para documentar seu código, ele é capaz de produzir documentos HTML bem formatados para seus parâmetros com o recurso de 'assinaturas'. http://sphinx-doc.org/domains.html#signatures
fonte
O mainstream é, como outras respostas aqui já apontaram, provavelmente seguindo o caminho da Esfinge para que você possa usar o Sphinx para gerar esses documentos sofisticados posteriormente.
Dito isto, eu pessoalmente uso ocasionalmente o estilo de comentários embutidos.
Mais um exemplo aqui, com alguns pequenos detalhes documentados em linha:
Os benefícios (como @ mark-horvath já apontou em outro comentário) são:
Agora, alguns podem pensar que esse estilo parece "feio". Mas eu diria que "feio" é uma palavra subjetiva. Uma maneira mais neutra é dizer, esse estilo não é popular, portanto pode parecer menos familiar para você e, portanto, menos confortável. Novamente, "confortável" também é uma palavra subjetiva. Mas o ponto é que todos os benefícios descritos acima são objetivos. Você não pode alcançá-los se seguir o caminho padrão.
Esperançosamente, algum dia no futuro, haverá uma ferramenta geradora de documentos que também poderá consumir esse estilo embutido. Isso conduzirá a adoção.
PS: Essa resposta deriva da minha preferência de usar comentários embutidos sempre que achar necessário. Também uso o mesmo estilo embutido para documentar um dicionário .
fonte
Com base na resposta de dicas de tipo ( https://stackoverflow.com/a/9195565/2418922 ), que fornece uma maneira melhor estruturada de documentar tipos de parâmetros, também existe uma maneira estruturada de documentar tipos e descrições de parâmetros:
exemplo adotado em: https://pypi.org/project/autocommand/
fonte
As docstrings são úteis apenas em ambientes interativos, por exemplo, o shell Python. Ao documentar objetos que não serão usados interativamente (por exemplo, objetos internos, retornos de chamada da estrutura), você também pode usar comentários regulares. Aqui está um estilo que eu uso para colocar comentários recuados em itens, cada um em sua própria linha, para que você saiba que o comentário está se aplicando a:
Você não pode fazer esse tipo de coisa com docstrings.
fonte