新聞中心
極高層級(jí) API
本章節(jié)的函數(shù)將允許你執(zhí)行在文件或緩沖區(qū)中提供的 python 源代碼,但它們將不允許你在更細(xì)節(jié)化的方式與解釋器進(jìn)行交互。

成都創(chuàng)新互聯(lián)是一家集網(wǎng)站建設(shè),蘭州企業(yè)網(wǎng)站建設(shè),蘭州品牌網(wǎng)站建設(shè),網(wǎng)站定制,蘭州網(wǎng)站建設(shè)報(bào)價(jià),網(wǎng)絡(luò)營(yíng)銷(xiāo),網(wǎng)絡(luò)優(yōu)化,蘭州網(wǎng)站推廣為一體的創(chuàng)新建站企業(yè),幫助傳統(tǒng)企業(yè)提升企業(yè)形象加強(qiáng)企業(yè)競(jìng)爭(zhēng)力。可充分滿(mǎn)足這一群體相比中小企業(yè)更為豐富、高端、多元的互聯(lián)網(wǎng)需求。同時(shí)我們時(shí)刻保持專(zhuān)業(yè)、時(shí)尚、前沿,時(shí)刻以成就客戶(hù)成長(zhǎng)自我,堅(jiān)持不斷學(xué)習(xí)、思考、沉淀、凈化自己,讓我們?yōu)楦嗟钠髽I(yè)打造出實(shí)用型網(wǎng)站。
這些函數(shù)中有幾個(gè)可以接受特定的前綴語(yǔ)法符號(hào)作為形參。 可用的前綴符號(hào)有 Py_eval_input, Py_file_input 以及 Py_single_input。 這些符號(hào)會(huì)在接受它們作為形參的函數(shù)文檔中加以說(shuō)明。
Note also that several of these functions take FILE* parameters. One particular issue which needs to be handled carefully is that the FILE structure for different C libraries can be different and incompatible. Under Windows (at least), it is possible for dynamically linked extensions to actually use different libraries, so care should be taken that FILE* parameters are only passed to these functions if it is certain that they were created by the same library that the Python runtime is using.
int Py_Main(int argc, wchar_t **argv)
Part of the Stable ABI.
針對(duì)標(biāo)準(zhǔn)解釋器的主程序。 嵌入了 Python 的程序?qū)⒖墒褂么顺绦颉?所提供的 argc 和 argv 形參應(yīng)當(dāng)與傳給 C 程序的 main() 函數(shù)的形參相同(將根據(jù)用戶(hù)的語(yǔ)言區(qū)域轉(zhuǎn)換為)。 一個(gè)重要的注意事項(xiàng)是參數(shù)列表可能會(huì)被修改(但參數(shù)列表中字符串所指向的內(nèi)容不會(huì)被修改)。 如果解釋器正常退出(即未引發(fā)異常)則返回值將為 0,如果解釋器因引發(fā)異常而退出則返回 1,或者如果形參列表不能表示有效的 Python 命令行則返回 2。
請(qǐng)注意如果引發(fā)了一個(gè)在其他場(chǎng)合下未處理的 SystemExit,此函數(shù)將不會(huì)返回 1,而是退出進(jìn)程,只要 Py_InspectFlag 還未被設(shè)置。
int Py_BytesMain(int argc, char **argv)
Part of the Stable ABI since version 3.8.
類(lèi)似于 Py_Main() 但 argv 是一個(gè)包含字節(jié)串的數(shù)組。
3.8 新版功能.
int PyRun_AnyFile(FILE *fp, const char *filename)
這是針對(duì)下面 PyRun_AnyFileExFlags() 的簡(jiǎn)化版接口,將 closeit 設(shè)為 0 而將 flags 設(shè)為 NULL。
int PyRun_AnyFileFlags(FILE *fp, const char *filename, PyCompilerFlags *flags)
這是針對(duì)下面 PyRun_AnyFileExFlags() 的簡(jiǎn)化版接口,將 closeit 參數(shù)設(shè)為 0。
int PyRun_AnyFileEx(FILE *fp, const char *filename, int closeit)
這是針對(duì)下面 PyRun_AnyFileExFlags() 的簡(jiǎn)化版接口,將 flags 參數(shù)設(shè)為 NULL。
int PyRun_AnyFileExFlags(FILE *fp, const char *filename, int closeit, PyCompilerFlags *flags)
如果 fp 指向一個(gè)關(guān)聯(lián)到交互設(shè)備(控制臺(tái)或終端輸入或 Unix 偽終端)的文件,則返回 PyRun_InteractiveLoop() 的值,否則返回 PyRun_SimpleFile() 的結(jié)果。 filename 會(huì)使用文件系統(tǒng)的編碼格式 (sys.getfilesystemencoding()) 來(lái)解碼。 如果 filename 為 NULL,此函數(shù)會(huì)使用 "???" 作為文件名。 如果 closeit 為真值,文件會(huì)在 PyRun_SimpleFileExFlags() 返回之前被關(guān)閉。
int PyRun_SimpleString(const char *command)
This is a simplified interface to PyRun_SimpleStringFlags() below, leaving the PyCompilerFlags* argument set to NULL.
int PyRun_SimpleStringFlags(const char *command, PyCompilerFlags *flags)
根據(jù) flags 參數(shù),在 __main__ 模塊中執(zhí)行 Python 源代碼。 如果 __main__ 尚不存在,它將被創(chuàng)建。 成功時(shí)返回 0,如果引發(fā)異常則返回 -1。 如果發(fā)生錯(cuò)誤,則將無(wú)法獲得異常信息。 對(duì)于 flags 的含義,請(qǐng)參閱下文。
請(qǐng)注意如果引發(fā)了一個(gè)在其他場(chǎng)合下未處理的 SystemExit,此函數(shù)將不會(huì)返回 -1,而是退出進(jìn)程,只要 Py_InspectFlag 還未被設(shè)置。
int PyRun_SimpleFile(FILE *fp, const char *filename)
這是針對(duì)下面 PyRun_SimpleFileExFlags() 的簡(jiǎn)化版接口,將 closeit 設(shè)為 0 而將 flags 設(shè)為 NULL。
int PyRun_SimpleFileEx(FILE *fp, const char *filename, int closeit)
這是針對(duì)下面 PyRun_SimpleFileExFlags() 的簡(jiǎn)化版接口,將 flags 設(shè)為 NULL。
int PyRun_SimpleFileExFlags(FILE *fp, const char *filename, int closeit, PyCompilerFlags *flags)
類(lèi)似于 PyRun_SimpleStringFlags(),但 Python 源代碼是從 fp 讀取而不是一個(gè)內(nèi)存中的字符串。 filename 應(yīng)為文件名,它將使用 filesystem encoding and error handler 來(lái)解碼。 如果 closeit 為真值,則文件將在 PyRun_SimpleFileExFlags() 返回之前被關(guān)閉。
備注
在 Windows 上,fp 應(yīng)當(dāng)以二進(jìn)制模式打開(kāi) (即 fopen(filename, "rb"))。 否則,Python 可能無(wú)法正確地處理使用 LF 行結(jié)束符的腳本文件。
int PyRun_InteractiveOne(FILE *fp, const char *filename)
這是針對(duì)下面 PyRun_InteractiveOneFlags() 的簡(jiǎn)化版接口,將 flags 設(shè)為 NULL。
int PyRun_InteractiveOneFlags(FILE *fp, const char *filename, PyCompilerFlags *flags)
根據(jù) flags 參數(shù)讀取并執(zhí)行來(lái)自與交互設(shè)備相關(guān)聯(lián)的文件的一條語(yǔ)句。 用戶(hù)將得到使用 sys.ps1 和 sys.ps2 的提示。 filename 將使用 filesystem encoding and error handler 來(lái)解碼。
當(dāng)輸入被成功執(zhí)行時(shí)返回 0,如果引發(fā)異常則返回 -1,或者如果存在解析錯(cuò)誤則返回來(lái)自作為 Python 的組成部分發(fā)布的 errcode.h 包括文件的錯(cuò)誤代碼。 (請(qǐng)注意 errcode.h 并未被 Python.h 所包括,因此如果需要?jiǎng)t必須專(zhuān)門(mén)地包括。)
int PyRun_InteractiveLoop(FILE *fp, const char *filename)
這是針對(duì)下面 PyRun_InteractiveLoopFlags() 的簡(jiǎn)化版接口,將 flags 設(shè)為 NULL。
int PyRun_InteractiveLoopFlags(FILE *fp, const char *filename, PyCompilerFlags *flags)
讀取并執(zhí)行來(lái)自與交互設(shè)備相關(guān)聯(lián)的語(yǔ)句直至到達(dá) EOF。 用戶(hù)將得到使用 sys.ps1 和 sys.ps2 的提示。 filename 將使用 filesystem encoding and error handler 來(lái)解碼。 當(dāng)位于 EOF 時(shí)將返回 0,或者當(dāng)失敗時(shí)將返回一個(gè)負(fù)數(shù)。
int (*PyOS_InputHook)(void)
Part of the Stable ABI.
可以被設(shè)為指向一個(gè)原型為 int func(void) 的函數(shù)。 該函數(shù)將在Python 的解釋器提示符即將空閑并等待用戶(hù)從終端輸入時(shí)被調(diào)用。 返回值會(huì)被忽略。 重載這個(gè)鉤子可被用來(lái)將解釋器的提示符集成到其他事件循環(huán)中,就像 Python 碼中 Modules/_tkinter.c 所做的那樣。
char *(*PyOS_ReadlineFunctionPointer)(FILE*, FILE*, const char*)
可以被設(shè)為指向一個(gè)原型為 char *func(FILE *stdin, FILE *stdout, char *prompt) 的函數(shù),重載被用來(lái)讀取解釋器提示符的一行輸入的默認(rèn)函數(shù)。 該函數(shù)被預(yù)期為如果字符串 prompt 不為 NULL 就輸出它,然后從所提供的標(biāo)準(zhǔn)輸入文件讀取一行輸入,并返回結(jié)果字符串。 例如,readline 模塊將這個(gè)鉤子設(shè)置為提供行編輯和 tab 鍵補(bǔ)全等功能。
結(jié)果必須是一個(gè)由 PyMem_RawMalloc() 或 PyMem_RawRealloc() 分配的字符串,或者如果發(fā)生錯(cuò)誤則為 NULL。
在 3.4 版更改: 結(jié)果必須由 PyMem_RawMalloc() 或 PyMem_RawRealloc() 分配,而不是由 PyMem_Malloc() 或 PyMem_Realloc() 分配。
PyObject *PyRun_String(const char *str, int start, PyObject *globals, PyObject *locals)
Return value: New reference.
這是針對(duì)下面 PyRun_StringFlags() 的簡(jiǎn)化版接口,將 flags 設(shè)為 NULL。
PyObject *PyRun_StringFlags(const char *str, int start, PyObject *globals, PyObject *locals, PyCompilerFlags *flags)
Return value: New reference.
在由對(duì)象 globals 和 locals 指定的上下文中執(zhí)行來(lái)自 str 的 Python 源代碼,并使用以 flags 指定的編譯器旗標(biāo)。 globals 必須是一個(gè)字典;locals 可以是任何實(shí)現(xiàn)了映射協(xié)議的對(duì)象。 形參 start 指定了應(yīng)當(dāng)被用來(lái)解析源代碼的起始形符。
返回將代碼作為 Python 對(duì)象執(zhí)行的結(jié)果,或者如果引發(fā)了異常則返回 NULL。
PyObject *PyRun_File(FILE *fp, const char *filename, int start, PyObject *globals, PyObject *locals)
Return value: New reference.
這是針對(duì)下面 PyRun_FileExFlags() 的簡(jiǎn)化版接口,將 closeit 設(shè)為 0 并將 flags 設(shè)為 NULL。
PyObject *PyRun_FileEx(FILE *fp, const char *filename, int start, PyObject *globals, PyObject *locals, int closeit)
Return value: New reference.
這是針對(duì)下面 PyRun_FileExFlags() 的簡(jiǎn)化版接口,將 flags 設(shè)為 NULL。
PyObject *PyRun_FileFlags(FILE *fp, const char *filename, int start, PyObject *globals, PyObject *locals, PyCompilerFlags *flags)
Return value: New reference.
這是針對(duì)下面 PyRun_FileExFlags() 的簡(jiǎn)化版接口,將 closeit 設(shè)為 0。
PyObject *PyRun_FileExFlags(FILE *fp, const char *filename, int start, PyObject *globals, PyObject *locals, int closeit, PyCompilerFlags *flags)
Return value: New reference.
類(lèi)似于 PyRun_StringFlags(),但 Python 源代碼是從 fp 讀取而不是一個(gè)內(nèi)存中的字符串。 filename 應(yīng)為文件名,它將使用 filesystem encoding and error handler 來(lái)解碼。 如果 closeit 為真值,則文件將在 PyRun_FileExFlags() 返回之前被關(guān)閉。
PyObject *Py_CompileString(const char *str, const char *filename, int start)
Return value: New reference. Part of the Stable ABI.
這是針對(duì)下面 Py_CompileStringFlags() 的簡(jiǎn)化版接口,將 flags 設(shè)為 NULL。
PyObject *Py_CompileStringFlags(const char *str, const char *filename, int start, PyCompilerFlags *flags)
Return value: New reference.
這是針對(duì)下面 Py_CompileStringExFlags() 的簡(jiǎn)化版接口,將 optimize 設(shè)為 -1。
PyObject *Py_CompileStringObject(const char *str, PyObject *filename, int start, PyCompilerFlags *flags, int optimize)
Return value: New reference.
解析并編譯 str 中的 Python 源代碼,返回結(jié)果代碼對(duì)象。 開(kāi)始形符由 start 給出;這可被用來(lái)限制可被編譯的代碼并且應(yīng)為 Py_eval_input, Py_file_input 或 Py_single_input。 由 filename 指定的文件名會(huì)被用來(lái)構(gòu)造代碼對(duì)象并可能出現(xiàn)在回溯信息或 SyntaxError 異常消息中。 如果代碼無(wú)法被解析或編譯則此函數(shù)將返回 NULL。
整數(shù) optimize 指定編譯器的優(yōu)化級(jí)別;值 -1 將選擇與 -O 選項(xiàng)相同的解釋器優(yōu)化級(jí)別。 顯式級(jí)別為 0 (無(wú)優(yōu)化;__debug__ 為真值)、1 (斷言被移除,__debug__ 為假值) 或 2 (文檔字符串也被移除)。
3.4 新版功能.
PyObject *Py_CompileStringExFlags(const char *str, const char *filename, int start, PyCompilerFlags *flags, int optimize)
Return value: New reference.
與 Py_CompileStringObject() 類(lèi)似,但 filename 是以 filesystem encoding and error handler 解碼出的字節(jié)串。
3.2 新版功能.
PyObject *PyEval_EvalCode(PyObject *co, PyObject *globals, PyObject *locals)
Return value: New reference. Part of the Stable ABI.
這是針對(duì) PyEval_EvalCodeEx() 的簡(jiǎn)化版接口,只附帶代碼對(duì)象,以及全局和局部變量。 其他參數(shù)均設(shè)為 NULL。
PyObject *PyEval_EvalCodeEx(PyObject *co, PyObject *globals, PyObject *locals, PyObject *const *args, int argcount, PyObject *const *kws, int kwcount, PyObject *const *defs, int defcount, PyObject *kwdefs, PyObject *closure)
Return value: New reference. Part of the Stable ABI.
對(duì)一個(gè)預(yù)編譯的代碼對(duì)象求值,為其求值給出特定的環(huán)境。 此環(huán)境由全局變量的字典,局部變量映射對(duì)象,參數(shù)、關(guān)鍵字和默認(rèn)值的數(shù)組,僅限關(guān)鍵字 參數(shù)的默認(rèn)值的字典和單元的封閉元組構(gòu)成。
PyObject *PyEval_EvalFrame(PyFrameObject *f)
Return value: New reference. Part of the Stable ABI.
對(duì)一個(gè)執(zhí)行幀求值。 這是針對(duì) PyEval_EvalFrameEx() 的簡(jiǎn)化版接口,用于保持向下兼容性。
PyObject *PyEval_EvalFrameEx(PyFrameObject *f, int throwflag)
Return value: New reference. Part of the Stable ABI.
這是 Python 解釋運(yùn)行不帶修飾的主函數(shù)。 與執(zhí)行幀 f 相關(guān)聯(lián)的代碼對(duì)象將被執(zhí)行,解釋字節(jié)碼并根據(jù)需要執(zhí)行調(diào)用。 額外的 throwflag 形參基本可以被忽略 —— 如果為真值,則會(huì)導(dǎo)致立即拋出一個(gè)異常;這會(huì)被用于生成器對(duì)象的 throw() 方法。
在 3.4 版更改: 該函數(shù)現(xiàn)在包含一個(gè)調(diào)試斷言,用以確保不會(huì)靜默地丟棄活動(dòng)的異常。
int PyEval_MergeCompilerFlags(PyCompilerFlags *cf)
此函數(shù)會(huì)修改當(dāng)前求值幀的旗標(biāo),并在成功時(shí)返回真值,失敗時(shí)返回假值。
int Py_eval_input
Python 語(yǔ)法中用于孤立表達(dá)式的起始符號(hào);配合 Py_CompileString() 使用。
int Py_file_input
Python 語(yǔ)法中用于從文件或其他源讀取語(yǔ)句序列的起始符號(hào);配合 Py_CompileString() 使用。 這是在編譯任意長(zhǎng)的 Python 源代碼時(shí)要使用的符號(hào)。
int Py_single_input
Python 語(yǔ)法中用于單獨(dú)語(yǔ)句的起始符號(hào);配合 Py_CompileString() 使用。 這是用于交互式解釋器循環(huán)的符號(hào)。
struct PyCompilerFlags
這是用來(lái)存放編譯器旗標(biāo)的結(jié)構(gòu)體。 對(duì)于代碼僅被編譯的情況,它將作為 int flags 傳入,而對(duì)于代碼要被執(zhí)行的情況,它將作為 PyCompilerFlags *flags 傳入。 在這種情況下,from __future__ import 可以修改 flags。
當(dāng) PyCompilerFlags *flags 為 NULL 時(shí),cf_flags 將被當(dāng)作等于 0 來(lái)處理,而任何 from __future__ import 所導(dǎo)致的修改都會(huì)被丟棄。
-
int cf_flags
編譯器旗標(biāo)。
-
int cf_feature_version
cf_feature_version 是 Python 的小版本號(hào)。 它應(yīng)當(dāng)被初始化為
PY_MINOR_VERSION。此字段默認(rèn)會(huì)被忽略,當(dāng)且僅當(dāng)在 cf_flags 中設(shè)置了
PyCF_ONLY_AST旗標(biāo)它才會(huì)被使用。
在 3.8 版更改: 增加了 cf_feature_version 字段。
int CO_FUTURE_DIVISION
這個(gè)標(biāo)志位可在 flags 中設(shè)置以使得除法運(yùn)算符 / 被解讀為 PEP 238 所規(guī)定的“真除法”。
當(dāng)前標(biāo)題:創(chuàng)新互聯(lián)Python教程:極高層級(jí)API
URL網(wǎng)址:http://www.dlmjj.cn/article/dpjoich.html


咨詢(xún)
建站咨詢(xún)
