Компилирует исходный код в объект кода, либо объект АСД.
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' - убрать ещё и строки документации.

    compiled = compile('y = x + 1', '<string>', 'exec')

Если исходный код содержит ошибку возбуждается исключение SyntaxError, если он содержит нулевые байты — исключение TypeError.

Объекты кода могут быть исполнены при помощи exec() или eval().

На заметку
Чтобы узнать больше об объектах АСД (Абстрактное Синтаксическое Дерево), обратитесь к документации по модулю ast. Если требуется разобрать код в его АСД-представление, используйте ast.parse().
Синонимы поиска: compile
На заметку
Зарегистрированные пользователи могут публиковать свои Статьи.