À 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!