He visto algunos estilos diferentes de escribir cadenas de documentos en Python, ¿hay un estilo oficial o "acordado"?
python
coding-style
documentation
docstring
Noah McIlraith
fuente
fuente
epydoc
,doxygen
,sphinx
? ¿Alguien tiene alguna estadística, es uno de ellos va a reemplazar a los demás, en casos como este, demasiadas opciones pueden dañar.def foo(self, other):\n\t"""\n\t(blank line)\n\t:param other: \n\t:return:\n\t"""
Respuestas:
Formatos
Las cadenas de documentos de Python se pueden escribir siguiendo varios formatos como mostraron las otras publicaciones. Sin embargo, el formato de cadena de documentación predeterminado de Sphinx no se mencionó y se basa en reStructuredText (reST) . Puede obtener información sobre los formatos principales en esta publicación de blog .
Tenga en cuenta que la PEP 287 recomienda la reST
A continuación se muestran los principales formatos utilizados para las cadenas de documentos.
- Epytext
Históricamente , prevalecía un estilo similar al javadoc , por lo que se tomó como base para Epydoc (con el
Epytext
formato llamado ) para generar documentación.Ejemplo:
- descanso
Hoy en día, el formato probablemente más frecuente es el formato reStructuredText (reST) que Sphinx utiliza para generar documentación. Nota: se usa por defecto en JetBrains PyCharm (escriba comillas triples después de definir un método y presione enter). También se usa de forma predeterminada como formato de salida en Pyment.
Ejemplo:
- Google
Google tiene su propio formato que a menudo se usa. También puede ser interpretado por Sphinx (es decir, utilizando el complemento de Napoleón ).
Ejemplo:
Aún más ejemplos
- Numpydoc
Tenga en cuenta que Numpy recomienda seguir su propio numpydoc basado en el formato de Google y que Sphinx pueda usar.
Convertir / Generar
Es posible utilizar una herramienta como Pyment para generar automáticamente docstrings a un proyecto de Python aún no documentado, o para convertir docstrings existentes (puede estar mezclando varios formatos) de un formato a otro.
Nota: Los ejemplos se toman de la documentación de pago
fuente
La guía de estilo de Google contiene una excelente guía de estilo de Python. Incluye convenciones para una sintaxis de cadena de documentos legible que ofrece una mejor orientación que PEP-257. Por ejemplo:
Me gustaría extender esto para incluir también información de tipo en los argumentos, como se describe en este tutorial de documentación de Sphinx . Por ejemplo:
fuente
Las convenciones de Docstring están en PEP-257 con mucho más detalle que PEP-8.
Sin embargo, las cadenas de documentos parecen ser mucho más personales que otras áreas de código. Los diferentes proyectos tendrán su propio estándar.
Tiendo a incluir siempre cadenas de documentos, porque tienden a demostrar cómo usar la función y lo que hace muy rápidamente.
Prefiero mantener las cosas consistentes, independientemente de la longitud de la cadena. Me gusta cómo codificar las miradas cuando la sangría y el espaciado son consistentes. Eso significa que uso:
Terminado:
Y tienden a dejar de comentar en la primera línea en cadenas de documentos más largas:
Lo que significa que encuentro que las cadenas de documentos que comienzan así son desordenadas.
fuente
"""Return the squared result"""
en lugar de"""Returns the squared result"""
. Aunque personalmente, escribo el mío como Tim está aquí, a pesar de lo que dice la PEP.Como aparentemente nadie lo mencionó: también puede usar el Estándar Numpy Docstring . Es ampliamente utilizado en la comunidad científica.
La extensión de la esfinge de Napolean para analizar las cadenas de documentos al estilo de Google (recomendada en la respuesta de @Nathan) también admite la cadena de documentos al estilo Numpy, y hace una breve comparación de ambas.
Y por último un ejemplo básico para dar una idea de cómo se ve:
fuente
PEP-8 es el estándar oficial de codificación de python. Contiene una sección sobre cadenas de documentos, que se refiere a PEP-257 , una especificación completa para cadenas de documentos.
fuente
Es Python; todo vale . Considere cómo publicar su documentación . Las cadenas de documentos son invisibles, excepto para los lectores de su código fuente.
A la gente realmente le gusta navegar y buscar documentación en la web. Para lograr eso, use la herramienta de documentación Sphinx . Es el estándar de facto para documentar proyectos de Python. El producto es hermoso: eche un vistazo a https://python-guide.readthedocs.org/en/latest/ . El sitio web Read the Docs alojará sus documentos de forma gratuita.
fuente
ipython
para probar una biblioteca, y hace que la lectura de cadenas de documentos sea muy simple: todo lo que tengo que escribir esyour_module.some_method_im_curious_about?
y obtengo una impresión agradable, incluida la cadena de documentos.help
función en la función / método / clase documentada (y eso puede hacerlo incluso si solo tiene acceso al módulo compilado). Personalmente, creo que uno debe tener esto en cuenta al elegir la convención de docstring (es decir, que tiene la intención de leerse tal cual).Sugiero usar el programa pep257 Python de Vladimir Keleshev para verificar sus cadenas de documentos con PEP-257 y el Estándar de Numpy Docstring para describir parámetros, devoluciones, etc.
pep257 informará la divergencia que realice del estándar y se llama pylint y pep8.
fuente
pydocstyle --select=D4 tmp.py
comprobaciones de una variedad de problemas de contenido de docstring, incluida la denominación de secciones.