Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

variable contenant le nom de la fonction en cours

7 réponses
Avatar
HIL
Bonjour,

existe-t-il en python une variable qui contient le nom de la fonction
courante à la manière de "__FUNCTION__" en C ?

Merci d'avance
HIL

7 réponses

Avatar
Bertrand B
Bonjour,

existe-t-il en python une variable qui contient le nom de la fonction
courante à la manière de "__FUNCTION__" en C ?

Merci d'avance
HIL


Il manque une information : pour quoi faire ?
(les analogies entre un langage compilé et un interprété peuvent fa ire
passer à côté de solution plus naturelles).

--
Un blog sur les pages persos de wanadoo ?
chtioblogue : http://perso.wanadoo.fr/bertrand.belguise/blog/blog.html
(Totalement client-side sans php ni base de donnée)

Avatar
tiissa
HIL wrote:
existe-t-il en python une variable qui contient le nom de la fonction
courante à la manière de "__FUNCTION__" en C ?


Comme le dit Bertrand B, il faut faire attention à ce que l'on entend
par "nom de la fonction". En particulier les objets en python peuvent
avoir plusieurs noms.

Pour une fonction, son attribut __name__ semble donner celui avec lequel
elle a été définie.

Pour l'obtenir, je pense que le plus simple est de passer par les
fonctions d'inspection de la pile d'appel :

import traceback
def f():
... print traceback.extract_stack(limit=1)[0][2]



...
f()
f



g=f
g()
f








Je te renvoie à la documentation [1] pour les détails. ;)


[1] http://docs.python.org/lib/module-traceback.html



Avatar
Amaury Forgeot d'Arc
Bonjour,

existe-t-il en python une variable qui contient le nom de la fonction
courante à la manière de "__FUNCTION__" en C ?

Merci d'avance
HIL


On peut utiliser sys._getframe()

def __FUNCTION__():
return sys._getframe(1).f_code.co_name

def f():
print "Ceci est la fonction", __FUNCTION__()

Avatar
bruno at modulix
HIL wrote:
Bonjour,

existe-t-il en python une variable qui contient le nom de la fonction
courante à la manière de "__FUNCTION__" en C ?


Pas directement PAQJS, mais c'est possible avec sys._getframe():
http://aspn.activestate.com/ASPN/Cookbook/Python/Recipe/66062

Merci d'avance
HIL



--
bruno desthuilliers
python -c "print '@'.join(['.'.join([w[::-1] for w in p.split('.')]) for
p in ''.split('@')])"

Avatar
HIL
Bonjour,

existe-t-il en python une variable qui contient le nom de la fonction
courante à la manière de "__FUNCTION__" en C ?

Merci d'avance
HIL


Il manque une information : pour quoi faire ?
(les analogies entre un langage compilé et un interprété peuvent faire
passer à côté de solution plus naturelles).



J'utilise le module logging de python pour avoir des traces lorsque j'ai
besoin de debugger, le formatage des logs permet d'afficher pas mal d'infos
mais je n'ai pas le nom de la fonction depuis laquel j'ai affiché le log.

HIL


Avatar
HIL
HIL wrote:


Bonjour,

existe-t-il en python une variable qui contient le nom de la fonction
courante à la manière de "__FUNCTION__" en C ?

Merci d'avance
HIL


Il manque une information : pour quoi faire ?
(les analogies entre un langage compilé et un interprété peuvent faire
passer à côté de solution plus naturelles).



J'utilise le module logging de python pour avoir des traces lorsque j'ai
besoin de debugger, le formatage des logs permet d'afficher pas mal
d'infos mais je n'ai pas le nom de la fonction depuis laquel j'ai affiché
le log.

HIL


je relance au cas où qq'un a une idée.

Merci d'avance.
HIL



Avatar
Bertrand B
HIL wrote:

Bonjour,

existe-t-il en python une variable qui contient le nom de la fonctio n
courante à la manière de "__FUNCTION__" en C ?

Merci d'avance
HIL
Il manque une information : pour quoi faire ?

(les analogies entre un langage compilé et un interprété peuven t faire
passer à côté de solution plus naturelles).

J'utilise le module logging de python pour avoir des traces lorsque j' ai

besoin de debugger, le formatage des logs permet d'afficher pas mal
d'infos mais je n'ai pas le nom de la fonction depuis laquel j'ai affi ché
le log.

HIL


je relance au cas où qq'un a une idée.

Merci d'avance.
HIL
La réponse d'amaury de ... ne fonctionne pas ?


def __FUNCTION__():
return sys._getframe(1).f_code.co_name




--
Un blog sur les pages persos de wanadoo ?
chtioblogue : http://perso.wanadoo.fr/bertrand.belguise/blog/blog.html
(Totalement client-side sans php ni base de donnée)