Obtener la cadena de documentación de una función

184

Tengo la siguiente función:

def my_func():
    """My docstring is both funny and informative"""
    pass

¿Cómo obtengo acceso a la cadena de documentación?

Teifion
fuente
13
Tenga en cuenta que ejecutar Python con -OO elimina las cadenas de documentos. Si tiene la intención de distribuir su código a otros, tenga en cuenta que pueden ejecutarlo de esa manera. Hará que esas personas sean realmente infelices si su código se basa en cadenas de documentos, pero no capta el caso donde no existen.
DNS

Respuestas:

243

Interactivamente, puede mostrarlo con

help(my_func)

O desde el código puede recuperarlo con

my_func.__doc__
relajarse
fuente
1
Por cierto: esta técnica funciona con funciones integradas, así como módulos y clases (ayuda de prueba () con objetos también, también podría funcionar). ¡Esto hace que su shell de Python sea un shell de ayuda interactivo!
Daren Thomas el
3
En el indicador de ipython, puede hacer my_func ?? y también mostraría la cadena de documentación.
ronak
1
help (func) proporciona una salida legible, mientras que func .__ doc__ proporciona una salida en línea. Gracias por la respuesta.
imsrgadich
77

También puedes usar inspect.getdoc. Limpia las __doc__pestañas normalizando los espacios y desplazando a la izquierda el cuerpo del documento para eliminar los espacios iniciales comunes.

Andrew Dalke
fuente
8

En ipython o jupyter notebook, puede usar todas las formas mencionadas anteriormente, pero sigo con

my_func?

o

?my_func

para un resumen rápido de la firma del método y la cadena de documentación.

Evito usar

my_func??

(como comentó @rohan) para docstring y úselo solo para verificar el código fuente

Sameer Sinha
fuente