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

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


咨詢
建站咨詢
