新聞中心
codeop —- 編譯python代碼
源代碼: Lib/codeop.py

革吉網(wǎng)站制作公司哪家好,找創(chuàng)新互聯(lián)公司!從網(wǎng)頁設(shè)計(jì)、網(wǎng)站建設(shè)、微信開發(fā)、APP開發(fā)、響應(yīng)式網(wǎng)站建設(shè)等網(wǎng)站項(xiàng)目制作,到程序開發(fā),運(yùn)營維護(hù)。創(chuàng)新互聯(lián)公司2013年開創(chuàng)至今到現(xiàn)在10年的時(shí)間,我們擁有了豐富的建站經(jīng)驗(yàn)和運(yùn)維經(jīng)驗(yàn),來保證我們的工作的順利進(jìn)行。專注于網(wǎng)站建設(shè)就選創(chuàng)新互聯(lián)公司。
codeop 模塊提供了可以模擬Python讀取-執(zhí)行-打印循環(huán)的實(shí)用程序,就像在 code 模塊中一樣。因此,您可能不希望直接使用該模塊;如果你想在程序中包含這樣一個(gè)循環(huán),你可能需要使用 code 模塊。
這個(gè)任務(wù)有兩個(gè)部分:
-
能夠判斷一行輸入是否完成了一個(gè)Python語句:簡而言之,告訴我們是否要打印 ‘
>>>‘ 或 ‘...‘。 -
記住用戶已輸入了哪些 future 語句,這樣后續(xù)的輸入可以在這些語句被啟用的狀態(tài)下被編譯。
codeop 模塊提供了分別以及同時(shí)執(zhí)行這兩個(gè)部分的方式。
只執(zhí)行前一部分:
codeop.compile_command(source, filename=’’, symbol=’single’)
嘗試編譯 source,這應(yīng)當(dāng)是一個(gè) Python 代碼字符串,并且在 source 是有效的 Python 代碼時(shí)返回一個(gè)代碼對象。 在此情況下,代碼對象的 filename 屬性將為 filename,其默認(rèn)值為 ''。 如果 source 不是 有效的 Python 代碼而是有效的 Python 代碼的一個(gè)前綴時(shí)將返回 None。
如果 source 存在問題,將引發(fā)異常。 如果存在無效的 Python 語法將引發(fā) SyntaxError,而如果存在無效的字面值則將引發(fā) OverflowError 或 ValueError。
symbol 參數(shù)確定 source 是作為一條語句 (對應(yīng)默認(rèn)值 'single'),作為一系列語句 ('exec') 還是作為一個(gè) expression ('eval') 進(jìn)行編譯。 任何其他值都將導(dǎo)致引發(fā) ValueError。
備注
解析器有可能(但很不常見)會(huì)在到達(dá)源碼結(jié)尾之前停止解析并成功輸出結(jié)果;在這種情況下,末尾的符號(hào)可能會(huì)被忽略而不是引發(fā)錯(cuò)誤。 例如,一個(gè)反斜杠加兩個(gè)換行符之后可以跟隨任何無意義的符號(hào)。 一旦解析器 API 得到改進(jìn)將修正這個(gè)問題。
class codeop.Compile
這個(gè)類的實(shí)例具有 __call__() 方法,其簽名與內(nèi)置函數(shù) compile() 相似,區(qū)別在于如果該實(shí)例編譯了包含 __future__ 語句的程序文本,則實(shí)例會(huì)‘記住’并使用已生效的語句編譯所有后續(xù)程序文本。
class codeop.CommandCompiler
這個(gè)類的實(shí)例具有 __call__() 方法,其簽名與 compile_command() 相似;區(qū)別在于如果該實(shí)例編譯了包含 __future__ 語句的程序文本,則實(shí)例會(huì)‘記住’并使用已生效的語句編譯編譯所有后續(xù)程序文本。
新聞標(biāo)題:創(chuàng)新互聯(lián)Python教程:codeop—-編譯Python代碼
文章源于:http://www.5511xx.com/article/djpecse.html


咨詢
建站咨詢
