Maison  >  Article  >  développement back-end  >  Pouvez-vous extraire les noms de variables originaux des arguments de fonction en Python ?

Pouvez-vous extraire les noms de variables originaux des arguments de fonction en Python ?

Susan Sarandon
Susan Sarandonoriginal
2024-10-30 12:34:03395parcourir

Can You Extract Original Variable Names from Function Arguments in Python?

Comment extraire le nom de variable d'origine des arguments transmis aux fonctions

Considérez le scénario suivant : vous avez une fonction qui nécessite le nom d'une variable comme argument pour effectuer certaines opérations basées sur ce nom. Existe-t-il un moyen d'obtenir le nom de variable d'origine dans la fonction ?

Pour répondre à cette question, explorons une méthode utilisant le module inspect qui vous permet de récupérer le contexte d'appel et d'extraire les noms de variables du contexte de code. .

<code class="python">import inspect

def foo(a, f, b):
    # Get the stack frame of the calling function
    frame = inspect.currentframe()
    
    # Move up one level to get the frame of the calling context
    frame = inspect.getouterframes(frame)[1]

    # Get the source code context of the calling context
    string = inspect.getframeinfo(frame[0]).code_context[0].strip()
    
    # Extract the argument names from the code context
    args = string[string.find('(') + 1:-1].split(',')
    
    names = []
    for i in args:
        if i.find('=') != -1:
            # Handle keyword arguments
            names.append(i.split('=')[1].strip())
        else:
            # Handle positional arguments
            names.append(i)
            
    print(names)

def main():
    e = 1
    c = 2
    foo(e, 1000, b = c)

main()</code>

Explication :

  1. inspect.currentframe() récupère le cadre de pile de la fonction actuelle, qui est foo() dans ce cas.
  2. inspect.getouterframes() navigue d'un niveau vers le haut dans le contexte d'appel pour obtenir le cadre de la fonction appelante, main().
  3. inspect.getframeinfo() récupère les informations de contexte de code pour le cadre acquis.
  4. Nous isolons la liste d'arguments en analysant le contexte du code, puis extrayons les noms des arguments, en tenant compte à la fois des arguments de position et des mots-clés.
  5. Enfin, la liste des variables d'origine Les noms sont imprimés.

Exemple de résultat :

['e', '1000', 'c']

Remarque : Cette approche implique l'inspection de la pile d'appels et l'interprétation du contexte du code source, fragile et sujet aux erreurs. Il n'est pas recommandé pour une utilisation pratique et ne doit être envisagé qu'à des fins académiques ou de divertissement.

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