Récupération des arguments de nom de variable
Lors du passage de variables comme arguments à une fonction, il peut être souhaitable d'accéder à leurs noms d'origine. Cependant, par défaut, Python ne fournit pas de mécanisme simple pour cela.
Piratage du module Inspect
Pour obtenir des noms de variables, vous pouvez exploiter le module inspect de Python, bien que il est crucial de faire preuve de prudence car cette approche peut conduire à un comportement inattendu.
Considérez la fonction suivante :
<code class="python">import inspect def foo(a, f, b): frame = inspect.currentframe() frame = inspect.getouterframes(frame)[1] string = inspect.getframeinfo(frame[0]).code_context[0].strip() args = string[string.find('(') + 1:-1].split(',') names = [] for i in args: if i.find('=') != -1: names.append(i.split('=')[1].strip()) else: names.append(i) print(names) def main(): e = 1 c = 2 foo(e, 1000, b=c) main()</code>
Cette méthode inspecte le cadre actuel et récupère la chaîne d'appel de fonction du cadre externe . Ensuite, il extrait une liste d’arguments, qui inclut les paramètres par défaut. En analysant cette chaîne, vous pouvez obtenir les noms de variables d'origine, comme indiqué dans le résultat :
['e', '1000', 'c']
Limitations et recommandations
Il est impératif de noter qu'en utilisant ce Cette approche n’est pas recommandée en pratique. Cela peut conduire à des résultats peu fiables et introduire une complexité inutile. Au lieu de cela, envisagez de transmettre explicitement les noms de variables ou d'utiliser un modèle de conception plus approprié pour obtenir la fonctionnalité souhaitée.
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!