Python執(zhí)行代碼的實際操作的五個步驟詳細(xì)介紹
你對 Python執(zhí)行代碼的五步驟的具體應(yīng)用都了解嗎?想詳細(xì)了解Python執(zhí)行代碼在實際運行中實際操作步驟嗎?如果你對其有想了了解的欲望的話,你就可以點擊我們的文章對其進(jìn)行一個更好的了解。
Python執(zhí)行代碼要經(jīng)過如下過程:
1. Tokenizer進(jìn)行詞法分析,把源程序分解為Token
2. Parser根據(jù)Token創(chuàng)建CST
3. CST被轉(zhuǎn)換為AST
4. AST被編譯為字節(jié)碼
5. 執(zhí)行字節(jié)碼
當(dāng)執(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 *);
以上就是對Python執(zhí)行代碼要經(jīng)過相關(guān)的內(nèi)容的介紹,忘你會有所收獲。
【編輯推薦】
- Python學(xué)習(xí)入門中的先搭環(huán)境的具體應(yīng)用的方法介紹
- Python源碼分析的實際相關(guān)操作步驟解析
- Python庫如何高效的完成工作的詳細(xì)介紹
- Python編程語言的功能優(yōu)點的具體體現(xiàn)
- Python編程語言在Zope軟件開發(fā)中具體應(yīng)用