II. Introspection dynamique▲
L'introspection dynamique consiste à proposer dynamiquement (c'est à dire en fonction du contexte) une liste de choix possibles des différentes propriétés ou méthodes d'un objet.
On obtient ce comportement de l'interpréteur en saisissant le début de l'objet que l'on souhaite utiliser avec la touche [TAB]
II-A. Complétion▲
IPython utilise l'implémentation de la complétion de readline.
- Mots clé par exemple import, def, class
- Méthodes, par exemple os.path.abdpath()
- Variables
- Ou bien sur les noms de fichier dans le répertoire courant
Prenons un exemple simple, nous souhaitons récupérer dans une variable le chemin courant dans lequel nous sommes.
D'abord, on doit importer le module os.
imp<
TAB>
Taper sur tabulation a pour effet de compléter automatiquement le mot clé import.
Finissons d'importer le module OS :
import
OS
Ensuite nous souhaitons mettre le chemin courant dans la variable repertoireCourant :
repertoireCourant =
os.get<
TAB>
Cette fois, taper sur la touche tabulation a pour effet de proposer les choix possibles pour les méthodes et propriètés possibles du module os (commençant par get dans notre exemple). Une fois la bonne méthode trouvée, getcwd() en l'occurence, nous récupérons le chemin dans la variable repertoireCourant.
Enfin, nous voulons afficher le contenu de la variable repertoireCourant :
print
rep<
TAB>
Cette fois, taper sur la touche tabulations nous permet de récupérer le nom de la variable que l'on recherche sous la forme d'une liste de variables disponibles dans le contexte de notre recherche :
II-B. Définitions de fonctions▲
Etant donné la multitude de classes et par extension de méthodes et de propriétés qui en dépendent, il n'est pas évident de connaître par coeur toutes les définitions.
IPython offre la possibilité de lire rapidement les docstrings (documentation interne) d'un module, d'une classe, d'une méthode ou d'une proprièté.
Reprenons l'exemple précédent en cherchant la documentation de la méthode getcwd()
os.getcwd?
Le docstring nous indique que cette méthode retourne le chemin courant sous forme d'une chaîne de caractères.
II-C. Code source d'un module▲
De même, IPython offre la possibilité d'obtenir très simplement le code source d'une méthode.
Par exemple, pour connaître le code source de la méthode basename() du module os :
os.path.basename??
Vous constatez qu'un champ Source a été ajouté et qu'il contient le code de la méthode. Cette fonctionnalité ne marche qu'avec des modules écrits en Python. Vous ne pourrez pas voir le source d'un module écrit en C comme par exemple le module pysvn (utilisation en python du gestionnaire de version subversion).
Cette fonctionnalité nous permet de comprendre rapidement ce que fait notre méthode et comment elle s'utilise.
II-D. Désignation de l'emplacement du fichier source du module▲
Quand vous utilisez la fonction ? ou ?? vous remarquerez la présence d'un champ File qui représente le chemin absolu du module interrogé.
Pour reprendre notre exemple de la fonction os.path.basename()
On peut alors voir que notre module est à l'emplacement suivant : c:\python25\lib\ntpath.py.