新聞中心
Python執(zhí)行代碼的實際操作的五個步驟分別是什么呢,相信很多沒有經(jīng)驗的人對此束手無策,為此本文總結(jié)了問題出現(xiàn)的原因和解決方法,通過這篇文章希望你能解決這個問題。
創(chuàng)新互聯(lián)建站于2013年成立,先為中陽等服務建站,中陽等地企業(yè),進行企業(yè)商務咨詢服務。為中陽企業(yè)網(wǎng)站制作PC+手機+微官網(wǎng)三網(wǎng)同步一站式服務解決您的所有建站問題。
Python執(zhí)行代碼要經(jīng)過如下過程:
1. Tokenizer進行詞法分析,把源程序分解為Token
2. Parser根據(jù)Token創(chuàng)建CST
3. CST被轉(zhuǎn)換為AST
4. AST被編譯為字節(jié)碼
5. 執(zhí)行字節(jié)碼
當執(zhí)行Python代碼的時候,以代碼存放在文件中的情況為例,Python會調(diào)用PyParser_ASTFromFile函數(shù)將文件的代碼內(nèi)容轉(zhuǎn)換為AST:
mod_ty
PyParser_ASTFromFile(FILE *fp, const char *filename,
int start, char *ps1,char *ps2, PyCompilerFlags *flags, int *errcode,
PyArena *arena)
{
mod_ty mod;
perrdetail err;
node *n = PyParser_ParseFileFlags(fp, filename,
&_PyParser_Grammar,start, ps1, ps2, &err, PARSER_FLAGS(flags));
if (n) {
mod = PyAST_FromNode(n, flags, filename, arena);PyNode_Free(n);
return mod;
}
else {
err_input(&err);
if (errcode)
*errerrcode = err.error;
return NULL;
}
}
在
PyParser_ParseFileFlags
在Python執(zhí)行代碼中還要把文件轉(zhuǎn)換成CST之后,PyAST_FromNode函數(shù)會把CST轉(zhuǎn)換成AST。此函數(shù)定義在include\ast.h中:
PyAPI_FUNC(mod_ty) PyAST_FromNode(const node *, PyCompilerFlags *flags, const char *, PyArena *);
看完上述內(nèi)容,你們掌握Python執(zhí)行代碼的實際操作的五個步驟分別是什么呢的方法了嗎?如果還想學到更多技能或想了解更多相關(guān)內(nèi)容,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,感謝各位的閱讀!
當前文章:Python執(zhí)行代碼的實際操作的五個步驟分別是什么呢
本文來源:http://fisionsoft.com.cn/article/jccsjg.html