¿Cómo documentar métodos con parámetros utilizando las cadenas de documentación de Python?
EDITAR: PEP 257 da este ejemplo:
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
...
¿Es esta la convención utilizada por la mayoría de los desarrolladores de Python?
Keyword arguments:
<parameter name> -- Definition (default value if any)
Esperaba algo un poco más 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
...
Entorno : Python 2.7.1
python
documentation
documentation-generation
David Andreoletti
fuente
fuente
Respuestas:
Según mi experiencia, las convenciones de docstring numpy (superconjunto PEP257) son las convenciones seguidas más difundidas que también son compatibles con herramientas, como Sphinx .
Un ejemplo:
fuente
SEVERE: Unexpected section title
: ¿conoce alguna forma de hacer que Sphinx esté más feliz al respecto?Description
. Revisé la documentación vacía, porque inmediatamente me di cuenta y pensé "Espera un segundo, ¿por qué son tres espacios? Eso es extraño. ¿Quién usaría tres espacios?"Dado que las cadenas de documentos son de forma libre, realmente depende de lo que use para analizar el código para generar la documentación de la API.
Recomendaría familiarizarse con el marcado Sphinx , ya que es ampliamente utilizado y se está convirtiendo en el estándar de facto para documentar proyectos de Python, en parte debido al excelente servicio readthedocs.org . Para parafrasear un ejemplo de la documentación de la esfinge como un fragmento de Python:
Este marcado admite referencias cruzadas entre documentos y más. Tenga en cuenta que la documentación de Sphinx usa (p. Ej.),
:py:attr:
Mientras que solo puede usarlo:attr:
cuando documenta desde el código fuente.Naturalmente, hay otras herramientas para documentar las API. Existe el Doxygen más clásico que usa
\param
comandos, pero no están diseñados específicamente para documentar el código Python como lo es Sphinx.Tenga en cuenta que hay una pregunta similar con una respuesta similar aquí ...
fuente
list
.Convenciones
Herramientas:
Actualización: desde Python 3.5 puede usar sugerencias de tipo, que es una sintaxis compacta y legible por máquina:
La principal ventaja de esta sintaxis es que está definida por el lenguaje y que no es ambigua, por lo que herramientas como PyCharm pueden aprovecharla fácilmente.
fuente
Las cadenas de documentos de Python son de forma libre , puede documentarlas de la forma que desee.
Ejemplos:
Ahora, hay algunas convenciones, pero Python no impone ninguna de ellas. Algunos proyectos tienen sus propias convenciones. Algunas herramientas para trabajar con cadenas de documentos también siguen convenciones específicas.
fuente
Si planea usar Sphinx para documentar su código, es capaz de producir documentos HTML bien formateados para sus parámetros con su función de 'firmas'. http://sphinx-doc.org/domains.html#signatures
fuente
La corriente principal es, como ya señalaron otras respuestas aquí, probablemente siguiendo la forma de Sphinx para que pueda usar Sphinx para generar esos documentos elegantes más adelante.
Dicho esto, personalmente voy con el estilo de comentario en línea de vez en cuando.
Un ejemplo más aquí, con algunos pequeños detalles documentados en línea:
Los beneficios (como @ mark-horvath ya señaló en otro comentario) son:
Ahora, algunos pueden pensar que este estilo se ve "feo". Pero yo diría que "feo" es una palabra subjetiva. Una forma más neutral es decir que este estilo no es convencional, por lo que puede parecerle menos familiar y, por lo tanto, menos cómodo. Nuevamente, "cómodo" es también una palabra subjetiva. Pero el punto es que todos los beneficios descritos anteriormente son objetivos. No puede lograrlos si sigue el camino estándar.
Esperemos que algún día en el futuro, haya una herramienta de generación de documentos que también pueda consumir ese estilo en línea. Eso impulsará la adopción.
PD: Esta respuesta se deriva de mi preferencia de usar comentarios en línea siempre que lo considero conveniente. También uso el mismo estilo en línea para documentar un diccionario .
fuente
Sobre la base de la respuesta de sugerencias de tipo ( https://stackoverflow.com/a/9195565/2418922 ), que proporciona una forma mejor estructurada para documentar tipos de parámetros, también existe una manera estructurada para documentar tanto el tipo como las descripciones de parámetros:
ejemplo adoptado de: https://pypi.org/project/autocommand/
fuente
Las cadenas de documentos solo son útiles en entornos interactivos, por ejemplo, el shell de Python. Al documentar objetos que no se van a usar de manera interactiva (por ejemplo, objetos internos, devoluciones de llamada de marco), también podría usar comentarios regulares. Aquí hay un estilo que uso para colgar comentarios sangrados de elementos, cada uno en su propia línea, para que sepa que el comentario se aplica a:
No puedes hacer este tipo de cosas con cadenas de documentos.
fuente