Si c'est pour l'exploration de voir ce qui se passe, je vous recommande de regarder IPython. Cela ajoute plusieurs raccourcis pour obtenir une documentation d'objets, des propriétés et même du code source. Par exemple en ajoutant un "?" à une fonction donnera l'aide pour l'objet (en fait un raccourci pour "help (obj)", alors que l'utilisation de deux? ("func??
") affichera le code source s'il est disponible.
Il y a aussi beaucoup de commodités supplémentaires, comme l'achèvement des onglets, la jolie impression des résultats, l'historique des résultats, etc. qui le rendent très pratique pour ce genre de programmation exploratoire.
Pour une utilisation plus programmatique de l'introspection, les fonctions intégrées de base comme dir()
, vars()
, getattr
etc seront utiles, mais il vaut bien votre temps pour vérifier le module inspect. Pour récupérer la source d'une fonction, utilisez « inspect.getsource
» par exemple, l'appliquer à lui-même:
>>> 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
est aussi souvent utile si vous avez affaire à l'emballage ou la manipulation de fonctions, car il donnera les noms et défaut valeurs des paramètres de la fonction.
Je renverser cet ordre. – bayer
La source est plus informative que dir() et une meilleure habitude à développer. –
Je ne suis pas d'accord. dir() est tellement plus rapide et dans 99% des cas, vous trouverez ce dont vous avez besoin avec l'aide(). – bayer