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

DDD
Libérer: 2024-11-01 17:00:02
original
889 Les gens l'ont consulté

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

Sortie :

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

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!

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