compile()方法從源代碼返回Python代碼對(duì)象(普通字符串,字節(jié)字符串或AST對(duì)象)。
compile()的語法為:
compile(source, filename, mode, flags=0, dont_inherit=False, optimize=-1)
如果Python代碼為字符串形式或?yàn)锳ST對(duì)象,并且您想將其更改為代碼對(duì)象,則使用compile()方法。
稍后可以使用諸如exec() 和 eval()之類的方法來調(diào)用compile()方法返回的代碼對(duì)象,這些方法 將執(zhí)行動(dòng)態(tài)生成的Python代碼。
source -普通字符串,字節(jié)字符串或AST對(duì)象
filename-從中讀取代碼的文件。如果不是從文件中讀取,則可以自己命名
mode- exec或eval或single。
eval -僅接受一個(gè)表達(dá)式。
exec -它可以使用具有Python語句,類和函數(shù)等的代碼塊。
single -如果包含單個(gè)交互式語句
flags(可選)和dont_inherit(可選)-指定將來的哪些語句會(huì)影響源代碼的編譯。默認(rèn)值:0
optimize(可選)-編譯器的優(yōu)化級(jí)別。默認(rèn)值-1。
compile()方法返回一個(gè)Python代碼對(duì)象。
codeInString = 'a = 5\nb=6\nsum=a+b\nprint("sum =",sum)' codeObejct = compile(codeInString, 'sumstring', 'exec') exec(codeObejct)
運(yùn)行該程序時(shí),輸出為:
sum = 11
在這里,源(source)采用普通字符串形式。該文件名是sumstring。并且,exec模式稍后允許使用exec()方法。
compile()方法將字符串轉(zhuǎn)換為Python代碼對(duì)象。然后使用exec()方法執(zhí)行代碼對(duì)象。