compile
compile() 函数将一个字符串编译为字节代码
1. eval模式
下面是一段简单的示例代码
exp = "3 + 8 * 2" |
compile的语法如下
compile(source, filename, mode[, flags[, dont_inherit]]) |
我们一般只用到前3个参数
- source: 字符串或者AST(Abstract Syntax Trees)对象
- filename: 脚本名称,如果source不是从某个脚本里读取的,则提供一个可辨认的值
- mode 编译代码的种类。可以指定为 exec, eval, single
在上面的示例中,mode设置为eval,将source编译成一个表达式,exp的内容看上去就是一个表达式。
2. single模式
exp = 'print("hello world")' |
程序输出结果
hello world |
python源码里对single解释是
single' to compile a single (interactive) statement |
如果只是编译一个单条交互式语句,似乎用处不大。
3. exec模式
exec模式是模块模式,如果你想将一段字符串编译成模块,那么需要采用exec模式,先看一个简单示例
exp = 'for i in range(3):print(i)' |
程序输出结果
0 |
接下来看一个更加复杂,更加具有实际应用价值的示例
string=''' |
使用exec,将字符串string编译成了一个模块,编译发生在当前模块,因此无需引入,max函数就已经存在于全局变量中了。