使用 compile() 函数,我们可以将源代码转换为可运行的代码对象。
compile (source, file_name, mode, flags=0, d optimize=-1)#where source can be String,a byte string,or abstract syntax tree
compile 函数将源作为主要输入。其他参数是源代码的文件名、指示源类型的模式、标志和 dont_inherit(用于向编译器提供指示)以及 optimize(用于指定优化级别)
| 参数 | 描述 | 必需/可选 |
|---|---|---|
| source (源) | 字符串、字节字符串或抽象语法树 (AST) | 必需 |
| file_name (文件名) | 包含源代码的文件,如果源不是来自文件,则可以给出任何名称 | 必需 |
| mode (模式) | 3 个可能的值 - eval:如果源是一个表达式 single:如果源是一个交互式语句 exec:如果源是一个语句块 |
必需 |
| flags (标志) | 默认值为零,表示哪个 future 语句影响编译 | 可选 |
| dont_inherit (不继承) | 默认值为 False,表示哪个 future 语句影响编译 | 可选 |
| optimize (优化) | 编译器的优化级别,默认为 -1 | 可选 |
根据传递的参数,源将被转换为 Python 代码对象。
| 输入 | 返回值 |
|---|---|
| Python 源 | Python 代码对象 |
pythonSource = 'n1 = 10\n n2=20\nsum=n1 + n2 \n print("sum =",sum)' pyth pythonSource,'randomName','exec')
exec(pythonCodeObj)
输出
sum = 30
pythonSource = 'print("Hi , I am a single statement)' pyth pythonSource,'randomName','eval')
exec(pythonCodeObj)
输出
Hi I am a single statement