Je veux obtenir des informations sur les appelants d'une fonction spécifique à Python. Par exemple: est-il possible avec python? P> p>
3 Réponses :
Oui, le Notez que vous " Il faut prendre soin de détecter quel type d'informations que vous trouvez dans chaque trame. p> sys._getframe () code>
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 code> module
; Vous rechercherez des locaux spécifiques dans l'attribut f_locals code>, ainsi que pour le
f_code code> Informations:
sys._getframe () code> retourne un objet de cadre, vous pouvez chaîner à travers toute la pile par Suivant la référence
f_back code> sur chacun. Ou vous pouvez utiliser
inspect.stack () code > fonction
pour produire une liste de cadres avec des informations supplémentaires. p> p>
Du docs: Il n'est pas garanti d'exister dans toutes les implémentations de Python. Code>
Un exemple: récupérera l'appelant "immédiat". p> et s'il n'a pas été appelé d'un autre que vous obtenez (en ralenti): p>
Merci, j'ai pu prendre cela et l'adapter à mes besoins.
Merci à Jon Clements Réponse, j'ai pu effectuer une fonction qui renvoie une liste ordonnée de tous les appelants: et quand appelé dans une chaîne: p> ressemble à ceci: p> dans mon cas, je filtre quelque chose à ou modifier la boucle d'origine à caution à la première apparition de n'importe quel nom commençant par '
' code>: p>