Python: obtenir le nom et des infos sur la fonction appelante

Pour débugguer, il est parfois utile de savoir qui fait appel à quoi, et avec quels arguments. C’est le rôle du module inspect.

#!/usr/bin/env python
# -*- coding: utf-8 -*-

import inspect

def foo(val):
val = val + 1
print "%s: Fonction '%s' appelée par '%s' à la ligne %s" % (inspect.stack()[0][1], inspect.stack()[1][4][0].strip(), inspect.stack()[2][4][0].strip(), inspect.stack()[1][2] )
#print inspect.stack()

def essai(val):
foo(val)

def main():
essai(7)

if __name__ == '__main__':
main()


et le résultat

test_inspect.py: Fonction 'foo(val)' appelée par 'essai(7)' à la ligne 12

Je le met ici pour le jour où j’en aurai encore besoin