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)' |