compile()方法從源代碼返回Python代碼對象(普通字符串,字節(jié)字符串或AST對象)。
compile()的語法為:
compile(source, filename, mode, flags=0, dont_inherit=False, optimize=-1)
如果Python代碼為字符串形式或為AST對象,并且您想將其更改為代碼對象,則使用compile()方法。
稍后可以使用諸如exec() 和 eval()之類的方法來調(diào)用compile()方法返回的代碼對象,這些方法 將執(zhí)行動態(tài)生成的Python代碼。
source -普通字符串,字節(jié)字符串或AST對象
filename-從中讀取代碼的文件。如果不是從文件中讀取,則可以自己命名
mode- exec或eval或single。
eval -僅接受一個表達式。
exec -它可以使用具有Python語句,類和函數(shù)等的代碼塊。
single -如果包含單個交互式語句
flags(可選)和dont_inherit(可選)-指定將來的哪些語句會影響源代碼的編譯。默認值:0
optimize(可選)-編譯器的優(yōu)化級別。默認值-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()方法將字符串轉(zhuǎn)換為Python代碼對象。然后使用exec()方法執(zhí)行代碼對象。