compile(source, filename, mode[, flags[, dont_inherit]])
参数source:字符串或者AST(Abstract Syntax Trees)对象。
参数 filename:代码文件名称,如果不是从文件读取代码则传递一些可辨认的值。
参数model:指定编译代码的种类。可以指定为 ‘exec’,’eval’,’single’。如果是exec类型,表示这是一个序列语句,可以进行运行;如果是eval类型,表示这是一个单一的表达式语句,可以用来计算相应的值出来;如果是single类型,表示这是一个单一语句,采用交互模式执行,在这种情况下,如果是一个表达式,一般会输出结果,而不是打印为None输出。
exec_code="for i in range(5): print i" cmp_code=compile(exec_code,'','exec') exec cmp_code cmp_code 0 1 2 3 4 Out[5]: <code object <module> at 00000000096FB730, file "", line
eval_code='1+2' cmp_code2=compile(eval_code,'','eval') eval(cmp_code2) cmp_code2 Out[31]: 3 Out[32]: <code object <module> at 00000000096FB6B0, file "", line 1>
cmp_code=compile('print "single"','','single') exec cmp_code cmp_code eval_code='1+2' cmp_code2=compile(eval_code,'','single') eval(cmp_code2) cmp_code2 cmp_code=compile('raw_input("pls input: ")','','single') exec cmp_code eval(cmp_code) cmp_code