Si esto es para explorar para ver qué está pasando, recomendaría mirar IPython. Esto agrega varios accesos directos para obtener una documentación de objetos, propiedades e incluso código fuente. Por ejemplo, agregar un "?" a una función dará la ayuda para el objeto (de hecho, un atajo para "ayuda (obj)", mientras que usando dos? s ("func??
") mostrará el código fuente si está disponible.
También hay una gran cantidad de comodidades adicionales, como la finalización de pestañas, impresión bonita de resultados, historial de resultados, etc. que lo hacen muy útil para este tipo de programación exploratoria.
Para un uso más programático de la introspección, las órdenes internas básicas como dir()
, vars()
, etc getattr
serán útiles, pero es bien digno de su tiempo a la salida del módulo inspect. Para buscar el origen de una función, utilice "inspect.getsource
", por ejemplo, aplicándolo a sí mismo:
>>> print inspect.getsource(inspect.getsource)
def getsource(object):
"""Return the text of the source code for an object.
The argument may be a module, class, method, function, traceback, frame,
or code object. The source code is returned as a single string. An
IOError is raised if the source code cannot be retrieved."""
lines, lnum = getsourcelines(object)
return string.join(lines, '')
inspect.getargspec
también es con frecuencia útil si usted está tratando con envoltura o la manipulación de funciones, ya que le dará los nombres y por defecto valores de los parámetros de la función.
Invertiría esa orden. – bayer
La fuente es más informativa que dir() y un mejor hábito para desarrollar. –
Me gustaría diferir. dir() es mucho más rápido y en el 99% de los casos descubrimos lo que necesitas junto con la ayuda(). – bayer