Heim  >  Artikel  >  Backend-Entwicklung  >  Wie repliziere ich die PHP-Funktionalität „compact()“ und „extract()“ in Python?

Wie repliziere ich die PHP-Funktionalität „compact()“ und „extract()“ in Python?

Susan Sarandon
Susan SarandonOriginal
2024-10-25 19:44:02405Durchsuche

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

PHPs Compact()- und Extract()-Gegenstücke in Python

PHPs Compact()-Funktion stellt eine Hashtabelle mit Werten zusammen, die der angegebenen Symboltabelle entsprechen Namen, und extract() kehrt diesen Prozess um. Während Python locals(), globals() und vars() bereitstellt, fehlt ihm ein integrierter Mechanismus zum Isolieren eines Teils dieser Werte.

Implementierung von Compact()

Bei Bedarf können Sie ein Python-Äquivalent von compact() wie folgt implementieren:

<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() in Python

Versuch, einen Extrakt zu erstellen ()-Funktion in Python ist nicht empfehlenswert. Frühere Python-Interpreter ermöglichten eine Problemumgehung, aber in modernen Versionen funktioniert sie nicht mehr.

Pythons Perspektive

Von der Verwendung von compact() und extract() wird im Allgemeinen abgeraten Python, da es den pythonischen Prinzipien der Deutlichkeit, Einfachheit und Klarheit zuwiderläuft. Diese Funktionen können jedoch Nischenanwendungen beim Debuggen, bei der Post-Mortem-Analyse oder bei der Erstellung dynamischer Variablen haben.

Das obige ist der detaillierte Inhalt vonWie repliziere ich die PHP-Funktionalität „compact()“ und „extract()“ in Python?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn