Python compile()内置函数 --编译成代码或AST对象
将 source
编译成代码或 AST
对象,代码对象可以被内置函数 exec()
或 eval()
执行。source
可以是常规的 字符串
、字节字符串
,或者 AST
对象
格式及参数
1 | compile(source, filename, mode, flags=0, dont_inherit=False, optimize=-1) |
source:可以是常规的字符串、字节字符串,或者 AST 对象
filename:代码读取的文件名,如果代码不需要从文件中读取,可以传入一些可辨识的值(经常会使用
<string>
)
mode:指定了编译代码必须用的模式,如果
source
是:语句序列,可以是
exec
;
单一表达式,可以是eval
;
单个交互式语句,可以是single
,这种情况下,如果表达式执行结果不是None
将会被打印出来
flags:变量作用域,局部命名空间,如果被提供,可以是任何映射对象
flags 和 dont_inherit 是用来控制编译源码时的标志
optimize:指定编译器的优化级别;默认值
-1
选择与解释器的-O
选项相同的优化级别。显式级别:
0
(没有优化;__debug__
为真)
1
(断言被删除,__debug__
为假)
2
(文档字符串也被删除)
实例(python3.8.8)
1 | str1 = 'for i in range(3):print(i)' |