Maison  >  Article  >  développement back-end  >  Pouvez-vous récupérer les noms de variables d’origine transmis à une fonction Python ?

Pouvez-vous récupérer les noms de variables d’origine transmis à une fonction Python ?

DDD
DDDoriginal
2024-11-01 17:00:02877parcourir

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

Récupération des noms de variables d'origine transmis aux fonctions

En Python, obtenir le nom d'origine d'une variable transmise à une fonction peut sembler simple tâche. Cependant, la portée variable et le typage dynamique de Python posent certains défis pour y parvenir. Néanmoins, il existe un moyen de contourner cette limitation, bien qu'il ne soit pas recommandé pour une utilisation pratique en raison de sa complexité et de ses pièges potentiels.

Grâce au module inspect, il est possible de récupérer le contexte de code de l'appelant. fonction et extrayez les noms des variables passées. L'exemple Python suivant montre comment cela peut être réalisé :

<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>

Sortie :

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

Il est important de noter que cette technique ne doit être utilisée qu'à des fins éducatives ou expérimentales. Il est déconseillé d'implémenter cette méthode dans le code de production, car elle peut conduire à un code fragile, difficile à déboguer et potentiellement vulnérable aux problèmes de sécurité.

De manière générale, il est préférable de transmettre les noms des variables explicitement comme arguments supplémentaires à la fonction, ou pour utiliser d'autres approches pour gérer la tâche qui ne nécessite pas l'obtention des noms de variables d'origine.

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