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

Patricia Arquette
Libérer: 2024-10-30 21:11:03
original
270 Les gens l'ont consulté

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>
Copier après la connexion

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']
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!