Heim > Backend-Entwicklung > Python-Tutorial > Python-Funktion – kompilieren()

Python-Funktion – kompilieren()

高洛峰
Freigeben: 2016-10-17 14:56:13
Original
1400 Leute haben es durchsucht

compile(source, filename, mode[, flags[, dont_inherit]])

Chinesische Beschreibung: Kompilieren Sie die Quelle in Code oder AST-Objekt. Codeobjekte können über die exec-Anweisung ausgeführt oder mit eval() ausgewertet werden.

Parameterquelle: Zeichenfolge oder AST-Objekt (Abstract Syntax Trees).

Parameter Dateiname: Codedateiname, übergeben Sie einen identifizierbaren Wert, wenn der Code nicht aus einer Datei gelesen wird.

Parametermodell: Gibt den Typ des kompilierten Codes an. Kann als „exec“, „eval“, „single“ angegeben werden.

Parameter flag und dont_inherit: Diese beiden Parameter sind noch nicht eingeführt und sind optionale Parameter.


Version: Anders in Python2.3, 2.6, 2.7, 3.2, bitte achten Sie bei der Verwendung darauf, kompatibel mit Python3


Englische Beschreibung:

Kompilieren Sie die Quelle in einen Code oder ein AST-Objekt. Codeobjekte können durch eine exec-Anweisung ausgeführt oder durch einen Aufruf von eval() ausgewertet werden Informationen zum Arbeiten mit AST-Objekten finden Sie in der Dokumentation zum AST-Modul.

Das Dateinamenargument sollte der Datei, aus der der Code gelesen wurde, einen erkennbaren Wert übergeben; eine Datei ('' wird häufig verwendet).

Das mode-Argument gibt an, welche Art von Code kompiliert werden muss; es kann „exec“ sein, wenn die Quelle aus einer Folge von Anweisungen besteht, „eval“, wenn es besteht aus einem einzelnen Ausdruck oder „single“, wenn es aus einer einzelnen interaktiven Anweisung besteht (im letzteren Fall werden Ausdrucksanweisungen, die etwas anderes als „None“ ergeben, gedruckt).

Die optionalen Argumente flags und dont_inherit steuert, welche zukünftigen Anweisungen (siehe PEP 236) die Kompilierung der Quelle beeinflussen. Wenn keines von beiden vorhanden ist (oder beide Null sind), wird der Code mit den zukünftigen Anweisungen kompiliert, die in dem Code wirksam sind, der das Flags-Argument aufruft gegeben ist und dont_inherit nicht (oder Null) ist, werden die durch das Flags-Argument angegebenen zukünftigen Anweisungen zusätzlich zu denen verwendet, die ohnehin verwendet würden. Wenn dont_inherit eine ganze Zahl ungleich Null ist, dann ist es das Flags-Argument – ​​die zukünftigen Anweisungen in der Tat werden rund um den Aufruf zum Kompilieren ignoriert.

Zukünftige Anweisungen werden durch Bits angegeben, die bitweise mit ODER verknüpft werden können, um mehrere Anweisungen anzugeben. Das zum Spezifizieren einer bestimmten Funktion erforderliche Bitfeld kann als Attribut „compiler_flag“ gefunden werden _Feature-Instanz im __future__-Modul.

Diese Funktion löst SyntaxError aus, wenn die kompilierte Quelle ungültig ist, und TypeError, wenn die Quelle Nullbytes enthält.

Hinweis beim Kompilieren einer Zeichenfolge mit mehrzeiligem Code Im Modus „single“ oder „eval“ muss die Eingabe durch mindestens ein Zeilenumbruchzeichen abgeschlossen werden. Dies soll die Erkennung unvollständiger und vollständiger Anweisungen im Codemodul erleichtern.

Geändert in Version 2.3: Die Flags und dont_inherit Argumente wurden hinzugefügt.

Geändert in Version 2.6: Unterstützung für das Kompilieren von AST-Objekten.

Geändert in Version 2.7: Verwendung von Windows- und Mac-Zeilenumbrüchen ist ebenfalls nicht möglich nicht mehr mit einer neuen Zeile enden.


Codebeispiel:

>>> code = "for i in range(0, 10): print i"
>>> cmpcode = compile(code, '', 'exec')
>>> exec cmpcode
0
1
2
3
4
5
6
7
8
9
>>> str = "3 * 4 + 5"
>>> a = compile(str,'','eval')
>>> eval(a)
17
Nach dem Login kopieren


Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage