Функция compile
в Python используется для компиляции исходного кода в объект кода, который может быть выполнен функциями exec()
или eval()
. Это мощный инструмент для динамической генерации и выполнения кода.
Содержание
Синтаксис
compile(source, filename, mode, flags=0, dont_inherit=False, optimize=-1)
Параметры
source
: Строка с исходным кодом, абстрактное синтаксическое дерево (AST) или объект кода.filename
: Имя файла исходного кода. Используется для сообщений об ошибках.mode
: Один из режимов компиляции:'exec'
: Компилирует код для выполнения операторов.'eval'
: Компилирует код для вычисления одного выражения.'single'
: Компилирует код для выполнения одного оператора (например, в интерактивной среде).
flags
: Дополнительные опции для компилятора (например, активация будущих функций).dont_inherit
: Указывает, следует ли наследовать опции компиляции из текущего окружения.optimize
: Уровень оптимизации кода (0, 1 или 2).
Возвращаемое значение
Функция возвращает объект кода, который может быть выполнен с помощью exec()
или eval()
.
Примеры использования
Пример 1: Компиляция и выполнение кода с помощью exec
source_code = """
def greet(name):
return f'Hello, {name}!'
"""
code_object = compile(source_code, 'greet_code', 'exec')
exec(code_object)
# Теперь функция `greet` доступна для использования
print(greet('Alice')) # Вывод: Hello, Alice!
Пример 2: Компиляция и выполнение выражения с помощью eval
source_expr = "3 * 4 + 5"
code_object = compile(source_expr, 'simple_expr', 'eval')
result = eval(code_object)
print(result) # Вывод: 17
Пример 3: Компиляция и выполнение одного оператора
source_single = "print('This is a single statement')"
code_object = compile(source_single, 'single_stmt', 'single')
exec(code_object) # Вывод: This is a single statement