In Python integrierte Funktion - kompilieren
compilecompile(source, filename, mode[, flags[, dont_inherit,[optimize]]])
Diese Funktion ist Wird verwendet, um den Quellcode einer Zeichenfolge zu kompilieren, und das Ergebnis kann Bytecode oder AST (Abstract Syntax Tree) generieren. Bytecode kann mit der Funktion exec() ausgeführt werden, und AST kann mit eval() kompiliert werden.
2. Die Parameterquelle ist der Quellcode einer Zeichenfolge oder eines Arrays von AST-Objekten.
3. Der Parameter Dateiname ist das Dateiobjekt zum Lesen von Zeichenfolgen.
Wenn der Quellcode nicht zur Kompilierung aus der Datei gelesen wird, können hier einige Zeichenfolgen platziert werden, die zur Identifizierung dieser Codes verwendet werden.
4. Der Parametermodus wird verwendet, um den Typ des dargestellten Quellcodes anzugeben.
Wenn es sich um einen Exec-Typ handelt, bedeutet dies, dass es sich um eine ausführbare Sequenzanweisung handelt Typ bedeutet, dass es sich um eine einzelne Ausdrucksanweisung handelt, mit der der entsprechende Wert berechnet werden kann.
Wenn es sich um einen einzelnen Typ handelt, bedeutet dies, dass es sich um eine einzelne Anweisung handelt, die im interaktiven Modus ausgeführt wird Wenn es sich in diesem Fall um einen Ausdruck handelt, wird im Allgemeinen das Ergebnis ausgegeben, anstatt keine Ausgabe zu drucken.
5. Die optionalen Parameter flags und dont_inherit werden zur Steuerung der Flags beim Kompilieren des Quellcodes verwendet.
Sie können das PEP236-Dokument lesen, um mehr über diese Parameter und die zugehörigen Kompilierungsanweisungen zu erfahren.
Wenn beide Standardparameter verwenden (d. h. beide sind Nullwerte),
Wenn diese Funktion zur Kompilierung aufgerufen wird, werden hauptsächlich die im Code angegebenen Kompilierungsfunktionen verwendet.
Wenn der Flags-Parameter vorhanden ist auf den Wert gesetzt, und dont_inherit ist nicht gesetzt (das heißt, es ist der Wert Null).
Dann funktionieren beim Kompilieren des Codes nicht nur die Kompilierungsfunktionen des Quellcodes, sondern auch die durch Flags angegebenen Funktionen. Dies entspricht der Vereinigung der beiden.
Wenn der Parameter dont_inherit auf einen Wert (dh einen Wert ungleich Null) eingestellt ist, werden beim Kompilieren einer Anweisung nur die Werte der Kompilierungsfunktion angegeben durch die Parameterflags wirksam werden, d. h. die im Quellcode angegebenen Funktionen werden nicht verwendet.
Kompilierungsfunktionen werden auf Parameter im Bitmap-Format eingestellt, die in __future__ angezeigt werden können.
6. Der optionale Parameter Optimize wird verwendet, um den vom Compiler verwendeten Optimierungsgrad anzugeben.
Der Standardwert ist -1, was bedeutet, dass der im Befehlszeilenparameter -O erhaltene Optimierungsgrad Vorrang hat 🎜>Wenn der Wert 0 ist (das heißt, es ist keine Optimierung erforderlich, wird __debug__ auf true gesetzt), was bedeutet, dass keine Optimierung erfolgt.
Wenn der Wert auf 1 gesetzt ist, wird die Assert-Anweisung gelöscht und __debug__; ist auf false gesetzt;
Wenn der Wert auf 2 gesetzt ist, außer Zusätzlich zu den auf 1 gesetzten Funktionen wird auch die Dokumentation im Code gelöscht, um die besten Optimierungsergebnisse zu erzielen.
7. Wenn diese Funktion den Code kompiliert, gibt sie SyntaxError zurück, wenn ein Syntaxfehler vorliegt.
Wenn der Code einige Nullbytes enthält, gibt sie TypeError zurück.
Hinweise:
1. Beim Kompilieren mit Einzel- oder Auswertungstyp:
Wenn mehrere Codezeilen vorhanden sind, muss nach jeder Codezeile mindestens ein Zeilenumbruch erfolgen, andernfalls wird zur Kompilierung aufgefordert Beim Kompilieren des Quellcodes des Codemoduls ist ein unvollständiger Fehler aufgetreten.
Nach der Python-Version 3.2 ist die Eingabe des Zeilenumbruchzeichens von Windows oder Mac zulässig.
2 Bei Verwendung des Exec-Modus ist es nicht erforderlich, nach jeder Zeile Optimierungsparameter einzugeben werden hinzugefügt.
Das Obige ist der Inhalt von Pythons integrierter Funktionskompilierung. Weitere verwandte Inhalte finden Sie auf der chinesischen PHP-Website (m.sbmmt.com)!
In [16]: str = "for i in range(10): print(i)" In [17]: c = compile(str,'','exec') #编译为字节代码对象 In [18]: exec(c) 0 1 2 3 4 5 6 7 8 9 In [19]: str = "3*x + 4*y" In [20]: c = compile(str,'','eval') #编译为表达式 In [23]: x,y = 3,4 In [24]: eval(c) Out[24]: 25