Maison > développement back-end > Tutoriel Python > Pouvez-vous récupérer le nom de variable d'origine transmis à une fonction Python ?

Pouvez-vous récupérer le nom de variable d'origine transmis à une fonction Python ?

Mary-Kate Olsen
Libérer: 2024-10-30 00:33:02
original
566 Les gens l'ont consulté

Can You Retrieve the Original Variable Name Passed to a Python Function?

Récupération du nom de variable d'origine dans les paramètres de fonction

En Python, il n'est généralement pas possible d'obtenir le nom de variable d'origine d'une variable passée comme un paramètre à une fonction. En effet, les appels de fonction transmettent les valeurs par référence plutôt que par nom.

Cependant, il existe une solution de contournement utilisant le module inspect. Bien qu'il ne soit pas recommandé en raison de sa complexité et de son potentiel de casse, il démontre une solution possible :

<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

Sortie :

['e', '1000', 'c']
Copier après la connexion

Dans cet exemple, le module inspect est utilisé pour récupérez le cadre actuel et inspectez le contexte du code, nous permettant d'extraire les noms d'arguments de l'appel de fonction. Notez que cette solution n'est pas triviale et ne doit être envisagée qu'à des fins pédagogiques.

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