Liste des fonctions imbriquées appelantes
Bonjour,
Je débute en python (3.7) et je cherche une moyen qui pourrait me ramener la liste des fonctions imbriquées.
Ca m'est nécessaire pour le debuging et connaître le contexte d'appel de chaque fonction.
J'ai bien trouvé quelques approches de solutions, avec :
Code:
1 2 3
| inspect.stack()
inspect.currentframe()
sys._getframe() |
mais rien qui donne le "chemin" d'appels complet :(
En Perl il y a caller() qui fait bien le job.
Voici un petit exemple, avec le résultat attendu:
module f1.py
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| form f2 import f2
def _internalF1():
currentCall = # Un truc ici pour récupérer le chemin complet des appels
print(f"Caller path: {currentCall}")
f2()
return True
def f1():
currentCall = # Un truc ici pour récupérer le chemin complet des appels
print(f"Caller path: {currentCall}")
_internalF1()
return True
f1() |
module f2.py
Code:
1 2 3 4 5 6 7 8 9 10
| def _internalF2():
currentCall = # Un truc ici pour récupérer le chemin complet des appels
print(f"Caller path: {currentCall}")
return True
def f2():
currentCall = # Un truc ici pour récupérer le chemin complet des appels
print(f"Caller path: {currentCall}")
_internalF2()
return True |
Et du coup je verrai bien un résultat dans cet esprit :
Code:
1 2 3 4
| Caller path: f1
Caller path: f1/_internalF1
Caller path: f1/_internalF1/f2
Caller path: f1/_internalF1/f2/_internalF2 |
Dans la big picture, il est à noter que, le chargement des modules est totalement dynamique et que je ne sais jamais dans quel ordre les fonctions seront appelées et par quelle autre.
D'ou le fait d'avoir un nom de fonction (externe), égal à son nom de module et que les sous fonctions internes, commence toujours par un "_".
Tout ceci me facilitant la maintenance.
Merci d'avance de votre aide :)