compile
Компилирует исходный код в объект кода, либо объект АСД.
compile(source, filename, mode, flags=0, dont_inherit=False, optimize=-1)
-> Объект кода, либо объект АСД
source -- Строка, строка байт. +py2.6 Или объект АСД.
filename -- Файл, из которого прочитан код. Если код не был считан из файла, можно передать любое значение, например строку '<string>'.
mode -- Режим компиляции кода: 'exec', если код состоит из последовательности инструкций; 'eval', если код содержит одно выражение; 'single', если код состоит из одной инструкции. Если код содержит несколько строк, то при использовании режимов 'single' и 'eval' (а до версии 3.2 ещё и 'exec'), нужно завершить ввод не меньшей мере одним символом перевода строки. +py2.7 Поддержка переводов строк из Windows и Mac.
+py2.3 flags=0 -- Указывает, какие инструкции из '__future__' следует использовать. Указывается битами, которые можно OR-ить, чтобы задать несколько инструкций. Биты можно подсмотреть в '__future__._Feature.compiler_flag'. См. PEP 236.
+py2.3 dont_inherit=False -- Следует ли использовать '__future__' определенные в коде, вызвавшем compile(), в дополнение в тем, что указаны во 'flags'.
+py3.2 optimize=-1 -- Задаёт уровень оптимизации компилятора: '-1' - использовать настройки интерпретатора (регулируются опцией -O); '0' - не оптимизировать, включить __debug__; '1' - убрать инструкции asserts, выключить __debug__; '2' - убрать ещё и строки документации.
filename -- Файл, из которого прочитан код. Если код не был считан из файла, можно передать любое значение, например строку '<string>'.
mode -- Режим компиляции кода: 'exec', если код состоит из последовательности инструкций; 'eval', если код содержит одно выражение; 'single', если код состоит из одной инструкции. Если код содержит несколько строк, то при использовании режимов 'single' и 'eval' (а до версии 3.2 ещё и 'exec'), нужно завершить ввод не меньшей мере одним символом перевода строки. +py2.7 Поддержка переводов строк из Windows и Mac.
+py2.3 flags=0 -- Указывает, какие инструкции из '__future__' следует использовать. Указывается битами, которые можно OR-ить, чтобы задать несколько инструкций. Биты можно подсмотреть в '__future__._Feature.compiler_flag'. См. PEP 236.
+py2.3 dont_inherit=False -- Следует ли использовать '__future__' определенные в коде, вызвавшем compile(), в дополнение в тем, что указаны во 'flags'.
+py3.2 optimize=-1 -- Задаёт уровень оптимизации компилятора: '-1' - использовать настройки интерпретатора (регулируются опцией -O); '0' - не оптимизировать, включить __debug__; '1' - убрать инструкции asserts, выключить __debug__; '2' - убрать ещё и строки документации.
compiled = compile('y = x + 1', '<string>', 'exec')
Если исходный код содержит ошибку возбуждается исключение SyntaxError, если он содержит нулевые байты — исключение TypeError.
Объекты кода могут быть исполнены при помощи exec() или eval().
На заметку
Чтобы узнать больше об объектах АСД (Абстрактное Синтаксическое Дерево), обратитесь к документации по модулю
ast
. Если требуется разобрать код в его АСД-представление, используйте ast.parse()
.
Синонимы поиска: compile
В разделе «Встроенные функции»:
abs
all
any
apply
ascii
bin
callable
chr
classmethod
cmp
delattr
dir
divmod
enumerate
eval
exec
filter
format
getattr
globals
hasattr
hash
help
hex
id
input
isinstance
issubclass
iter
len
locals
map
max
min
next
oct
open
ord
pow
print
raw_input
reduce
repr
reversed
round
setattr
sorted
staticmethod
sum
super
unichr
vars
zip
На заметку
Зарегистрированные пользователи могут публиковать свои Статьи.