Maison >développement back-end >Tutoriel Python >Comment puis-je récupérer les noms de variables lors du passage d'arguments à une fonction Python ?

Comment puis-je récupérer les noms de variables lors du passage d'arguments à une fonction Python ?

Patricia Arquette
Patricia Arquetteoriginal
2024-10-30 21:11:03345parcourir

How can I retrieve variable names when passing arguments to a Python function?

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!

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