Функція compile() обчислює код Python з вихідного об’єкта та повертає його.
Наприклад:
|
1 2 3 4 |
codeInString = 'a = 8\nb=7\nsum=a+b\nprint("sum =",sum)' codeObject = compile(codeInString, 'sumstring', 'exec') exec(codeObject) |
Результат:
sum = 15
Синтаксис функції compile()
|
1 |
compile(source, filename, mode) |
Параметри функції compile()
Функція compile() приймає наступні параметри:
source — звичайний рядок, байтовий рядок або об’єкт абстрактного синтаксичного дерева (скор. “AST” від англ. “Abstract Syntax Tree”);
filename — файл, з якого потрібно прочитати код;
mode — варіантами значень є exec (може приймати блок коду зі стейтментами, класом та функціями), eval (приймає один вираз) або single (приймає один стейтмент).
Примітка: Існують інші необов’язкові параметри, такі як flags, dont_inherit та optimize для функції compile(), але зазвичай вони не використовуються.
Значення, яке повертає функція compile()
Функція compile() повертає:
Об’єктний код Python.
Приклад: Функція compile() в Python
|
1 2 3 4 |
codeInString = 'a = 5\nb=6\nmul=a*b\nprint("mul =",mul)' codeObject = compile(codeInString, 'multiplyNumbers', 'exec') exec(codeObject) |
Результат:
mul = 30
В даному прикладі аргумент source — це рядкова змінна codeInString, яка має об’єктний код Python:
|
1 |
'a = 5\nb=6\nmul=a*b\nprint("mul =",mul)' |
У нас є функція compile() для компіляції вихідного коду:
|
1 |
compile(codeInString, 'sumstring', 'exec') |
Де:
filename — це sumstring;
mode — це exec;
передана змінна — codeInString.
Ми присвоїли функцію compile() в режимі exec змінній codeObject. Функція exec() виконує змінну codeObject та повертає результуючий об’єкт Python.
