compile() 创建代码对象
内置函数 compile(),Python 官方文档描述如下:
help(compile)
Help on built-in function compile in module builtins:
compile(source, filename, mode, flags=0, dont_inherit=False, optimize=-1)
Compile source into a code object that can be executed by exec() or eval().
The source code may represent a Python module, statement or expression.
The filename will be used for run-time error messages.
The mode must be 'exec' to compile a module, 'single' to compile a
single (interactive) statement, or 'eval' to compile an expression.
The flags argument, if present, controls which future statements influence
the compilation of the code.
The dont_inherit argument, if true, stops the compilation inheriting
the effects of any future statements in effect in the code calling
compile; if absent or false these statements do influence the compilation,
in addition to any features explicitly specified.
将 source 编译成代码或 AST 对象。代码对象可以被 exec() 或 eval() 执行。
参数说明:
- source,要编译的资源,可以是字符串、字节或 AST 对象。
- filename,源所来自的文件的名称。如果代码不需要从文件中读取,可以传入一些可辨识的值(经常会使用字符串)。
- mode,指定了编译代码必须用的模式。如果 source 是语句序列,可以是 ’exec’;如果是单一表达式,可以是 ’eval’;如果是单个交互式语句,可以是 ‘single’。
- flags 和 dont-inherit,控制在编译 source 时要用到哪个 future 语句。
- optimize,指定编译器的优化级别;默认值 -1 选择与解释器的 -O 选项相同的优化级别。
source = 'for i in range(3):print(i)'
code = compile(source,'null','exec')
code
<code object <module> at 0x000001E999B07780, file "null", line 1>
exec(code)
0
1
2
eval(code)
0
1
2