compile(source, filename, mode, flags=0, dont_inherit=False, optimize=- 1)

Компилирует исходный код в объект кода, либо объект АСД (абстрактное синтаксическое дерево). Объект кода может быть выполнен с помощью функций eval или exec.

Параметры

  • source может быть строкой, последовательностью байт или объектом АСД;
  • filename файл, из которого прочитан код. Если код не был прочитан из файла, обычно передается строка "<string>";
  • mode определяет, какой тип кода должен быть скомпилирован. Если исходный код содержит последовательность инструкций, то mode должен быть равен "exec".
  • Если код состоит из одной инструкции, то "single", а если из одного выражения, то "eval".
  • Опциональные параметры flags и dont_inherit нужны для того, чтобы определить, какие параметры компилятора должны быть активированы и какие инструкции из __future__ должны быть разрешены.
  • Если оба параметра не указаны или равны нуля, то код будет скомпилирован с теми же флагами, что и код, который вызывает compile;optimize указывает уровень оптимизации. Значение -1 указывает уровень оптимизации интерпретатора, заданный опциями -O. 0 — без оптимизации, 1 убрать инструкции assert, 2 — также убрать строки документации.

Возвращаемое значение

Фунция compile() возвращает

  • код объекта Python

Примеры

compiled = compile('print("Hello")', '<string>', 'exec')
exec(compiled)