8
votes

Obtenir les informations des appelants de la fonction dans Python

Je veux obtenir des informations sur les appelants d'une fonction spécifique à Python. Par exemple: xxx

est-il possible avec python?


0 commentaires

3 Réponses :


12
votes

Oui, le sys._getframe () fonction vous récupérez des images à partir de la pile d'exécution en cours, que vous pouvez ensuite inspecter avec les méthodes et la documentation trouvées dans Inspectez module ; Vous rechercherez des locaux spécifiques dans l'attribut f_locals , ainsi que pour le f_code Informations: xxx

Notez que vous " Il faut prendre soin de détecter quel type d'informations que vous trouvez dans chaque trame.

sys._getframe () retourne un objet de cadre, vous pouvez chaîner à travers toute la pile par Suivant la référence f_back sur chacun. Ou vous pouvez utiliser inspect.stack () fonction pour produire une liste de cadres avec des informations supplémentaires.


1 commentaires

Du docs: Il n'est pas garanti d'exister dans toutes les implémentations de Python.



3
votes

Un exemple: xxx

récupérera l'appelant "immédiat". xxx

et s'il n'a pas été appelé d'un autre que vous obtenez (en ralenti): xxx


1 commentaires

Merci, j'ai pu prendre cela et l'adapter à mes besoins.



2
votes

Merci à Jon Clements Réponse, j'ai pu effectuer une fonction qui renvoie une liste ordonnée de tous les appelants: xxx

et quand appelé dans une chaîne: xxx

ressemble à ceci: xxx

dans mon cas, je filtre quelque chose à '' et après, et Ensuite, prenez le dernier élément pour être le nom de l'appelant d'origine.

ou modifier la boucle d'origine à caution à la première apparition de n'importe quel nom commençant par ': xxx


0 commentaires