Récupérer l'appelant d'une fonction en Python

Chose que tu veux faire

Je veux obtenir le nom de fichier / la fonction qui a appelé la fonction en cours de traitement.

Méthode

Utilisez inspect.

Comment faire

caller_file.py


import callee_file


def main():
    callee_file.callee_function()


main()

callee_file.py


import inspect

def callee_function():
    # print(inspect.stack())
    print(inspect.stack()[1].filename)
    print(inspect.stack()[1].function)

Les appels sont stockés dans inspect.stack par ordre d'appel le plus lent. Si vous décommentez la 4ème ligne, le tableau suivant sera généré.

[
  FrameInfo(frame=<frame at 0x7fa68460f050, file '/path-to-dir/callee_file.py', line 4, code callee_function>, filename='/path-to-dir/callee_file.py', lineno=4, function='callee_function', code_context=['    print(inspect.stack())\n'], index=0),
  FrameInfo(frame=<frame at 0x10cc17650, file 'caller_file.py', line 5, code main>, filename='caller_file.py', lineno=5, function='main', code_context=['    callee_file.callee_function()\n'], index=0),
  FrameInfo(frame=<frame at 0x10ca61450, file 'caller_file.py', line 8, code <module>>, filename='caller_file.py', lineno=8, function='<module>', code_context=['main()\n'], index=0)
]

La première est l'information sur print (inspect.stack ()) sur la 4ème ligne de callee_file.py, La seconde est l'information de callee_file.callee_function () sur la 5ème ligne de caller_file.py Le troisième est l'information de main () sur la 8ème ligne de caller_file.py.

Puisque nous voulons les informations de l'appel de fonction précédent, nous avons besoin de ʻinspect.stack () [1] pour obtenir les informations du deuxième tableau. Les propriétés de ʻinspect.stack () [1] sont les suivantes, mais cette fois, ce serait bien si nous pouvions obtenir le nom du fichier et le nom de la fonction. Utilisez ʻinspect.stack () [1] .filename et ʻinspect.stack () [1] .function. En passant, vous pouvez également obtenir le numéro de séquence, vous pouvez donc utiliser ʻinspect.stack () [1] [1] et ʻinspect.stack () [1] [3].

référence

https://stackoverflow.com/questions/900392/getting-the-caller-function-name-inside-another-function-in-python

Recommended Posts

Récupérer l'appelant d'une fonction en Python
Obtenez le nombre d'éléments spécifiques dans la liste python
Une fonction qui mesure le temps de traitement d'une méthode en python
Créez une fonction pour obtenir le contenu de la base de données dans Go
Obtenez le nombre de lecteurs d'articles sur Mendeley en Python
Dessiner un graphique d'une fonction quadratique en Python
[Python] Récupérez les fichiers dans le dossier avec Python
Copiez la liste en Python
Sortie sous la forme d'un tableau python
Touchons une partie de l'apprentissage automatique avec Python
Créer une fonction en Python
Python VBA pour obtenir une capture de la page WEB entière avec Selenium
Obtenez une instance datetime à tout moment de la journée en Python
Comment obtenir le nombre de chiffres en Python
[python] Récupère la liste des classes définies dans le module
Obtenir la taille (nombre d'éléments) de Union Find en Python
Obtenez l'URL de la destination de la redirection HTTP en Python
Un mémorandum sur la mise en œuvre des recommandations en Python
Que signifie le dernier () dans une fonction en Python?
Obtenez le chemin du bureau en Python
Obtenez le chemin du script en Python
[Python] Faire de la fonction une fonction lambda
Obtenez le chemin du bureau en Python
Obtenez le nom d'hôte en Python
Comment obtenir une liste de fichiers dans le même répertoire avec python
Essayez d'obtenir la liste des fonctions du paquet Python> os
Découvrez la largeur apparente d'une chaîne en python
Avoir le graphique d'équation de la fonction linéaire dessiné en Python
[Note] Importation de fichiers dans le répertoire parent en Python
Comment obtenir la dernière (dernière) valeur d'une liste en Python
Comment obtenir une liste d'exceptions intégrées pour python
Un mémo que j'ai écrit une fonction de base en Python en utilisant la récurrence
Trouver les valeurs propres d'une vraie matrice symétrique en Python
Obtenez l'index de chaque élément de la matrice de confusion en Python
Vérifiez le comportement du destroyer en Python
Ecrire le test dans la docstring python
Prenez la somme logique de List en Python (fonction zip)
[Python3] Réécrire l'objet code de la fonction
Exécuter l'interpréteur Python dans le script
Le résultat de l'installation de python sur Anaconda
Comment obtenir stacktrace en python
[python] Obtenir une liste de variables d'instance
[python] [meta] Le type de python est-il un type?
Principes de base pour exécuter NoxPlayer en Python
Obtenez un jeton pour conoha avec python
À la recherche du FizzBuzz le plus rapide en Python
[Python] Récupère le code de caractère du fichier
Obtenez le nom de fichier du répertoire (glob)
L'histoire du traitement A du blackjack (python)
Obtenir la liste de codes EDINET en Python
[Python] Obtenir une liste de dossiers uniquement
Débarrassez-vous des images DICOM en Python
Comment déterminer l'existence d'un élément sélénium en Python
Essayez de transcrire la fonction de masse stochastique de la distribution binomiale en Python
Comment vérifier la taille de la mémoire d'une variable en Python
Lire la sortie standard d'un sous-processus ligne par ligne en Python
Comment vérifier la taille de la mémoire d'un dictionnaire en Python
[Python] Obtenir la date de mise à jour d'un article d'actualité à partir de HTML
[python] Obtenez le rang des valeurs dans la liste par ordre croissant / décroissant
[Python3] Définition d'un décorateur qui mesure le temps d'exécution d'une fonction
Comment obtenir les coordonnées de sommet d'une entité dans ArcPy