Symboltabelle in Python

8

Wie können wir die Symbol-Tabelle eines Python-Quellcodes sehen?

Ich meine, Python erstellt für jedes Programm eine Symboltabelle, bevor es tatsächlich ausgeführt wird. Also lautet meine Frage, wie ich diese Symboltabelle als Ausgabe bekommen kann.

    
Rahul Gupta 31.01.2012, 19:13
quelle

4 Antworten

6

Wenn Sie nach der Symboltabelle fragen, die beim Generieren von Bytecode verwendet wird, sehen Sie sich die symtable Modul. Auch diese beiden Artikel von Eli Bendersky sind faszinierend und sehr detailliert:

Python-Interna: Symboltabellen, Teil 1

Python-Interna: Symboltabellen, Teil 2

In Teil 2 erklärt er eine Funktion, die eine Beschreibung eines symtable ausdrucken kann, aber es scheint für Python 3 geschrieben worden zu sein. Hier ist eine Version für Python 2.x:

%Vor%     
voithos 31.01.2012, 19:30
quelle
7

Python ist eher dynamisch als statisch. Statt einer Symboltabelle wie im kompilierten Objektcode hat die virtuelle Maschine einen adressierbaren Namensraum für Ihre Variablen.

Die Funktion dir() oder dir(module) gibt den effektiven Namespace an diesem Punkt im Code zurück. Es wird hauptsächlich im interaktiven Interpreter verwendet, kann aber auch per Code verwendet werden. Es gibt eine Liste von Strings zurück, von denen jeder eine Variable mit einem gewissen Wert ist.

Die Funktion globals() gibt ein Wörterbuch mit Variablennamen an Variablenwerte zurück, wobei die Variablennamen in diesem Moment als global betrachtet werden.

Die Funktion locals() gibt ein Wörterbuch mit Variablennamen an Variablenwerte zurück, wobei die Variablennamen in diesem Moment als lokal betrachtet werden.

%Vor%     
wberry 31.01.2012 19:21
quelle
5

Python erstellt keine Symboltabelle, bevor das Programm ausgeführt wird. Tatsächlich können Typen und Funktionen während der Ausführung definiert werden (und sind normalerweise).

Vielleicht interessiert es Sie, Warum Python-Code zu kompilieren?

Siehe auch die detaillierte Antwort von @wberry

    
Johan Lundberg 31.01.2012 19:20
quelle
2

Sie werden wahrscheinlich Eli Benderskys Artikel zum Thema hier genießen

In CPython steht Ihnen das Modul symtable zur Verfügung.

In Teil 2 beschreibt Eli eine Methode Das führt die Symboltabelle, die unglaublich hilfreich ist:

%Vor%     
mvanveen 31.01.2012 19:36
quelle

Tags und Links