Maison  >  Article  >  développement back-end  >  Comment répliquer les fonctionnalités compact() et extract() de PHP en Python ?

Comment répliquer les fonctionnalités compact() et extract() de PHP en Python ?

Susan Sarandon
Susan Sarandonoriginal
2024-10-25 19:44:02405parcourir

 How to Replicate PHP's compact() and extract() Functionality in Python?

Les homologues Compact() et Extract() de PHP en Python

La fonction compact() de PHP assemble une table de hachage avec des valeurs correspondant à la table de symboles spécifiée noms, et extract() inverse ce processus. Bien que Python fournisse locals(), globals() et vars(), il lui manque un mécanisme intégré pour isoler une partie de ces valeurs.

Implémentation de Compact()

Si vous le souhaitez, vous pouvez implémenter un équivalent Python de compact() comme suit :

<code class="python">import inspect

def compact(*names):
    caller = inspect.stack()[1][0] # caller of compact()
    vars = {}
    for n in names:
        if n in caller.f_locals:
            vars[n] = caller.f_locals[n]
        elif n in caller.f_globals:
            vars[n] = caller.f_globals[n]
    return vars</code>

Extract() en Python

Tentative de création d'un extrait () en Python n’est pas conseillé. Les interpréteurs Python précédents permettaient une solution de contournement, mais dans les versions modernes, cela ne fonctionne plus.

Perspective de Python

L'utilisation de compact() et extract() est généralement déconseillée dans Python, car il va à l'encontre des principes pythoniques d'explicitation, de simplicité et de clarté. Cependant, ces fonctions peuvent avoir des applications de niche dans le débogage, l'analyse post-mortem ou la création de variables dynamiques.

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