Maison  >  Article  >  développement back-end  >  Comment une fonction peut-elle découvrir son propre nom en Python ?

Comment une fonction peut-elle découvrir son propre nom en Python ?

Susan Sarandon
Susan Sarandonoriginal
2024-10-28 22:33:30674parcourir

 How Can a Function Discover Its Own Name in Python?

À la recherche de l'identité de la fonction : découvrir son nom de l'intérieur

Dans le domaine du codage, les fonctions servent souvent de blocs de construction, effectuant des tâches spécifiques et former la base de programmes plus vastes. Cependant, avez-vous déjà rencontré le besoin de connaître le nom de la fonction que vous exécutez actuellement ?

Imaginez une fonction nommée foo qui souhaite proclamer son identité : "Bonjour tout le monde ! Je m'appelle foo." Mais comment foo peut-il déterminer son propre nom sans le coder explicitement en dur ?

Entrez dans le domaine de l'introspection dynamique. Grâce au module inspecter, il est possible de récupérer des informations sur la fonction en cours d'exécution à partir de cette même fonction. En plongeant dans les profondeurs de la pile, la méthode inspect.stack() renvoie une liste de frames, chacune représentant un appel dans la pile d'exécution actuelle.

Dans notre cas, inspect.stack()[0][ 3] désigne le cadre de la fonction actuelle, tandis que inspect.stack()[1][3] représente l'appelant de la fonction actuelle. En utilisant ces connaissances, le code suivant permet à foo de proclamer son identité sans recourir à des chaînes statiques :

<code class="python">import inspect

def foo():
   print("my name is", inspect.stack()[0][3])
   print("caller of foo:", inspect.stack()[1][3])

foo()</code>

Et comme par magie, le résultat révèle :

my name is foo
caller of foo: <module_caller_of_foo>

Exploiter le pouvoir de l'introspection , les fonctions peuvent désormais discerner leurs propres noms, ce qui leur permet de s'adapter et de communiquer dynamiquement leur identité dans le paysage en constante évolution de l'exécution du code.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn