compile()方法从源代码返回Python代码对象(普通字符串,字节字符串或AST对象)。
compile()的语法为:
compile(source, filename, mode, flags=0, dont_inherit=False, optimize=-1)
如果Python代码为字符串形式或为AST对象,并且您想将其更改为代码对象,则使用compile()方法。
稍后可以使用诸如exec() 和 eval()之类的方法来调用compile()方法返回的代码对象,这些方法 将执行动态生成的Python代码。
source -普通字符串,字节字符串或AST对象
filename-从中读取代码的文件。如果不是从文件中读取,则可以自己命名
mode- exec或eval或single。
eval -仅接受一个表达式。
exec -它可以使用具有Python语句,类和函数等的代码块。
single -如果包含单个交互式语句
flags(可选)和dont_inherit(可选)-指定将来的哪些语句会影响源代码的编译。默认值:0
optimize(可选)-编译器的优化级别。默认值-1。
compile()方法返回一个Python代码对象。
codeInString = 'a = 5\nb=6\nsum=a+b\nprint("sum =",sum)' codeObejct = compile(codeInString, 'sumstring', 'exec') exec(codeObejct)
运行该程序时,输出为:
sum = 11
在这里,源(source)采用普通字符串形式。该文件名是sumstring。并且,exec模式稍后允许使用exec()方法。
compile()方法将字符串转换为Python代码对象。然后使用exec()方法执行代码对象。