新聞中心
C API 的穩(wěn)定性
python 的 C 語(yǔ)言 API 包含于向下兼容政策 PEP 387 中。C API 會(huì)跟隨小版本的發(fā)布而發(fā)生變化(比如 3.9 到 3.10 的時(shí)候),不過(guò)大多數(shù)變化都是源代碼級(jí)兼容的,通常只會(huì)增加新的 API。已有 API 的修改或刪除,只有在廢止期過(guò)后或修復(fù)嚴(yán)重問(wèn)題時(shí)才會(huì)進(jìn)行。

成都一家集口碑和實(shí)力的網(wǎng)站建設(shè)服務(wù)商,擁有專業(yè)的企業(yè)建站團(tuán)隊(duì)和靠譜的建站技術(shù),十載企業(yè)及個(gè)人網(wǎng)站建設(shè)經(jīng)驗(yàn) ,為成都1000多家客戶提供網(wǎng)頁(yè)設(shè)計(jì)制作,網(wǎng)站開(kāi)發(fā),企業(yè)網(wǎng)站制作建設(shè)等服務(wù),包括成都營(yíng)銷型網(wǎng)站建設(shè),成都品牌網(wǎng)站建設(shè),同時(shí)也為不同行業(yè)的客戶提供網(wǎng)站建設(shè)、成都網(wǎng)站設(shè)計(jì)的服務(wù),包括成都電商型網(wǎng)站制作建設(shè),裝修行業(yè)網(wǎng)站制作建設(shè),傳統(tǒng)機(jī)械行業(yè)網(wǎng)站建設(shè),傳統(tǒng)農(nóng)業(yè)行業(yè)網(wǎng)站制作建設(shè)。在成都做網(wǎng)站,選網(wǎng)站制作建設(shè)服務(wù)商就選創(chuàng)新互聯(lián)建站。
CPython 的應(yīng)用二進(jìn)制接口(ABI)可以跨小版本實(shí)現(xiàn)前后兼容(只要以同樣方式編譯;參見(jiàn)下面的 平臺(tái)的考慮 )。因此,用 Python 3.10.0 編譯的代碼可以在 3.10.8 上運(yùn)行,反之亦然,但針對(duì) 3.9.x 和 3.10.x 則需分別進(jìn)行編譯。
帶下劃線前綴的是私有 API,如 _Py_InternalState,即便是補(bǔ)丁發(fā)布版本中也可能不加通知地進(jìn)行改動(dòng)。
應(yīng)用程序二進(jìn)制接口的穩(wěn)定版
Python 3.2 引入了 受限 API,Python 的 C API 的一個(gè)子集。 只使用受限 API 的擴(kuò)展可以被一次性編譯而適用于多個(gè) Python 版本。 受限 API 的內(nèi)容 如下所示。
為了實(shí)現(xiàn)這一點(diǎn),Python 提供了一個(gè) 穩(wěn)定 ABI: 一個(gè)將在各 Python 3.x 版本中保持兼容性的符號(hào)集合。 穩(wěn)定 ABI 包含了在受限 API 中暴露的符號(hào),但還包含其他符號(hào) – 例如,支持舊版受限 API 所需的函數(shù)。
(簡(jiǎn)單起見(jiàn),本文檔只討論了 擴(kuò)展,但受限 API 和穩(wěn)定 ABI 對(duì)于 API 的所有用法都同樣適用 – 例如,嵌入 Python 等。)
Py_LIMITED_API
請(qǐng)?jiān)诎?Python.h 之前定義這個(gè)宏以選擇只使用受限 API,并選擇受限 API 的版本。
將 Py_LIMITED_API 定義為對(duì)應(yīng)你的擴(kuò)展所支持的最低 Python 版本的 PY_VERSION_HEX 的值。 擴(kuò)展無(wú)需重編譯即可適用于從指定版本開(kāi)始的所有 Python 3 發(fā)布版,并可使用到該版本為止所引入的受限 API。
不直接使用 PY_VERSION_HEX 宏,而是礙編碼一個(gè)最小的次要版本(例如 0x030A0000 表示 Python 3.10)以便在使用未來(lái)的 Python 版本進(jìn)行編譯時(shí)保持穩(wěn)定。
你還可以將 Py_LIMITED_API 定義為 3。 其效果與 0x03020000 相同(即 Python 3.2,引入受限 API 的版本)。
在 Windows 上,使用穩(wěn)定 ABI 的擴(kuò)展應(yīng)當(dāng)被鏈接到 Python3.dll 而不是版本專屬的庫(kù)如 python39.dll。
在某些平臺(tái)上,Python 將查找并載入名稱中帶有 abi3 標(biāo)簽的共享庫(kù)文件 (例如 mymodule.abi3.so)。 它不會(huì)檢查這樣的擴(kuò)展是否兼容穩(wěn)定 ABI。 使用方 (或其打包工具) 需要確保這一些,例如,基于 3.10+ 受限 API 編譯的擴(kuò)展不可被安裝于更低版本的 Python 中。
穩(wěn)定 ABI 中的所有函數(shù)都會(huì)作為 Python 的共享庫(kù)中的函數(shù)存在,而不僅是作為宏。 這使得它們可以在不使用 C 預(yù)處理器的語(yǔ)言中使用。
受限 API 的作用域和性能
受限 API 的目標(biāo)是允許使用在完整 C API 中可用的任何東西,但可能會(huì)有性能上的損失。
例如,雖然 PyList_GetItem() 是可用的,但其 “不安全的” 宏版本 PyList_GET_ITEM() 則是不可用的。 這個(gè)宏的運(yùn)行速度更快因?yàn)樗梢岳冒姹緦俚牧斜韺?duì)象實(shí)現(xiàn)細(xì)節(jié)。
在未定義 Py_LIMITED_API 的情況下,某些 C API 函數(shù)將由宏來(lái)執(zhí)行內(nèi)聯(lián)或替換。 定義 Py_LIMITED_API 會(huì)禁用這樣的內(nèi)聯(lián),允許提升 Python 的數(shù)據(jù)結(jié)構(gòu)穩(wěn)定性,但有可能降低性能。
通過(guò)省略 Py_LIMITED_API 定義,可以使基于版本專屬的 ABI 來(lái)編譯受限 API 擴(kuò)展成為可能。 這能提升其在相應(yīng) Python 版本上的性能,但也將限制其兼容性。 基于 Py_LIMITED_API 進(jìn)行編譯將產(chǎn)生一個(gè)可在版本專屬擴(kuò)展不可用的場(chǎng)合分發(fā)的擴(kuò)展 – 例如,針對(duì)即將發(fā)布的 Python 版本的預(yù)發(fā)布包。
受限 API 警示
請(qǐng)注意基于 Py_LIMITED_API 進(jìn)行編譯 不能 完全保證代碼兼容受限 API 或穩(wěn)定 ABI。 Py_LIMITED_API 僅涵蓋了定義,但是一個(gè) API 還包括其他因素,例如預(yù)期的語(yǔ)義等。
Py_LIMITED_API 不能處理的一個(gè)問(wèn)題是附帶在較低 Python 版本中無(wú)效的參數(shù)調(diào)用某個(gè)函數(shù)。 例如,考慮一個(gè)接受 NULL 作為參數(shù)的函數(shù)。 在 Python 3.9 中,NULL 現(xiàn)在會(huì)選擇一個(gè)默認(rèn)行為,但在 Python 3.8 中,該參數(shù)將被直接使用,導(dǎo)致一個(gè) NULL 引用被崩潰。 類似的參數(shù)也適用于結(jié)構(gòu)體的字段。
另一個(gè)問(wèn)題是當(dāng)定義了 Py_LIMITED_API 時(shí)某些結(jié)構(gòu)體字段目前不會(huì)被隱藏,即使它們是受限 API 的一部分。
出于這些原因,我們建議用要支持的 所有 Python 小版本號(hào)來(lái)測(cè)試一個(gè)擴(kuò)展,并最好是用其中 最低 的版本來(lái)編譯它。
我們還建議查看所使用 API 的全部文檔以檢查其是否顯式指明為受限 API 的一部分。 即使定義了 Py_LIMITED_API,少數(shù)私有聲明還是會(huì)出于技術(shù)原因(或者甚至是作為程序缺陷在無(wú)意中)被暴露出來(lái)。
還要注意受限 API 并不必然是穩(wěn)定的:在 Python 3.8 上用 Py_LIMITED_API 編譯擴(kuò)展意味著該擴(kuò)展能在 Python 3.12 上運(yùn)行,但它將不一定能用 Python 3.12 編譯。 特別地,在穩(wěn)定 ABI 保持穩(wěn)定的情況下,部分受限 API 可能會(huì)被棄用并被移除。
平臺(tái)的考慮
ABI 的穩(wěn)定性不僅取決于 Python,還取決于所使用的編譯器、低層庫(kù)和編譯器選項(xiàng)。 對(duì)于穩(wěn)定 ABI 的目標(biāo)來(lái)說(shuō),這些細(xì)節(jié)定義了一個(gè) “平臺(tái)”。 它們通常會(huì)取決于 OS 類型和處理器架構(gòu)。
確保在特定平臺(tái)上的所有 Python 版本都以不破壞穩(wěn)定 ABI 的方式構(gòu)建是每個(gè)特定 Python 分發(fā)方的責(zé)任。 來(lái)自 python.org 以及許多第三方分發(fā)商的 Windows 和 macOS 發(fā)布版都必于這種情況。
受限 API 的內(nèi)容
目前,受限 API 包括下面這些項(xiàng):
-
PyAIter_Check()
-
PyArg_Parse()
-
PyArg_ParseTuple()
-
PyArg_ParseTupleAndKeywords()
-
PyArg_UnpackTuple()
-
PyArg_VaParse()
-
PyArg_VaParseTupleAndKeywords()
-
PyArg_ValidateKeywordArguments()
-
PyBaseObject_Type -
PyBool_FromLong()
-
PyBool_Type -
PyBuffer_FillContiguousStrides()
-
PyBuffer_FillInfo()
-
PyBuffer_FromContiguous()
-
PyBuffer_GetPointer()
-
PyBuffer_IsContiguous()
-
PyBuffer_Release()
-
PyBuffer_SizeFromFormat()
-
PyBuffer_ToContiguous()
-
PyByteArrayIter_Type -
PyByteArray_AsString()
-
PyByteArray_Concat()
-
PyByteArray_FromObject()
-
PyByteArray_FromStringAndSize()
-
PyByteArray_Resize()
-
PyByteArray_Size()
-
PyByteArray_Type
-
PyBytesIter_Type -
PyBytes_AsString()
-
PyBytes_AsStringAndSize()
-
PyBytes_Concat()
-
PyBytes_ConcatAndDel()
-
PyBytes_DecodeEscape() -
PyBytes_FromFormat()
-
PyBytes_FromFormatV()
-
PyBytes_FromObject()
-
PyBytes_FromString()
-
PyBytes_FromStringAndSize()
-
PyBytes_Repr() -
PyBytes_Size()
-
PyBytes_Type
-
PyCFunction
-
PyCFunctionWithKeywords
-
PyCFunction_Call() -
PyCFunction_GetFlags() -
PyCFunction_GetFunction() -
PyCFunction_GetSelf() -
PyCFunction_New() -
PyCFunction_NewEx() -
PyCFunction_Type -
PyCMethod_New() -
PyCallIter_New()
-
PyCallIter_Type
-
PyCallable_Check()
-
PyCapsule_Destructor
-
PyCapsule_GetContext()
-
PyCapsule_GetDestructor()
-
PyCapsule_GetName()
-
PyCapsule_GetPointer()
-
PyCapsule_Import()
-
PyCapsule_IsValid()
-
PyCapsule_New()
-
PyCapsule_SetContext()
-
PyCapsule_SetDestructor()
-
PyCapsule_SetName()
-
PyCapsule_SetPointer()
-
PyCapsule_Type -
PyClassMethodDescr_Type -
PyCodec_BackslashReplaceErrors()
-
PyCodec_Decode()
-
PyCodec_Decoder()
-
PyCodec_Encode()
-
PyCodec_Encoder()
-
PyCodec_IgnoreErrors()
-
PyCodec_IncrementalDecoder()
-
PyCodec_IncrementalEncoder()
-
PyCodec_KnownEncoding()
-
PyCodec_LookupError()
-
PyCodec_NameReplaceErrors()
-
PyCodec_Register()
-
PyCodec_RegisterError()
-
PyCodec_ReplaceErrors()
-
PyCodec_StreamReader()
-
PyCodec_StreamWriter()
-
PyCodec_StrictErrors()
-
PyCodec_Unregister()
-
PyCodec_XMLCharRefReplaceErrors()
-
PyComplex_FromDoubles()
-
PyComplex_ImagAsDouble()
-
PyComplex_RealAsDouble()
-
PyComplex_Type
-
PyDescr_NewClassMethod()
-
PyDescr_NewGetSet()
-
PyDescr_NewMember()
-
PyDescr_NewMethod()
-
PyDictItems_Type -
PyDictIterItem_Type -
PyDictIterKey_Type -
PyDictIterValue_Type -
PyDictKeys_Type -
PyDictProxy_New()
-
PyDictProxy_Type -
PyDictRevIterItem_Type -
PyDictRevIterKey_Type -
PyDictRevIterValue_Type -
PyDictValues_Type -
PyDict_Clear()
-
PyDict_Contains()
-
PyDict_Copy()
-
PyDict_DelItem()
-
PyDict_DelItemString()
-
PyDict_GetItem()
-
PyDict_GetItemString()
-
PyDict_GetItemWithError()
-
PyDict_Items()
-
PyDict_Keys()
-
PyDict_Merge()
-
PyDict_MergeFromSeq2()
-
PyDict_New()
-
PyDict_Next()
-
PyDict_SetItem()
-
PyDict_SetItemString()
-
PyDict_Size()
-
PyDict_Type
-
PyDict_Update()
-
PyDict_Values()
-
PyEllipsis_Type -
PyEnum_Type -
PyErr_BadArgument()
-
PyErr_BadInternalCall()
-
PyErr_CheckSignals()
-
PyErr_Clear()
-
PyErr_Display() -
PyErr_ExceptionMatches()
-
PyErr_Fetch()
-
PyErr_Format()
-
PyErr_FormatV()
-
PyErr_GetExcInfo()
-
PyErr_GetHandledException()
-
PyErr_GivenExceptionMatches()
-
PyErr_NewException()
-
PyErr_NewExceptionWithDoc()
-
PyErr_NoMemory()
-
PyErr_NormalizeException()
-
PyErr_Occurred()
-
PyErr_Print()
-
PyErr_PrintEx()
-
PyErr_ProgramText() -
PyErr_ResourceWarning()
-
PyErr_Restore()
-
PyErr_SetExcFromWindowsErr()
-
PyErr_SetExcFromWindowsErrWithFilename()
-
PyErr_SetExcFromWindowsErrWithFilenameObject()
-
PyErr_SetExcFromWindowsErrWithFilenameObjects()
-
PyErr_SetExcInfo()
-
PyErr_SetFromErrno()
-
PyErr_SetFromErrnoWithFilename()
-
PyErr_SetFromErrnoWithFilenameObject()
-
PyErr_SetFromErrnoWithFilenameObjects()
-
PyErr_SetFromWindowsErr()
-
PyErr_SetFromWindowsErrWithFilename()
-
PyErr_SetHandledException()
-
PyErr_SetImportError()
-
PyErr_SetImportErrorSubclass()
-
PyErr_SetInterrupt()
-
PyErr_SetInterruptEx()
-
PyErr_SetNone()
-
PyErr_SetObject()
-
PyErr_SetString()
-
PyErr_SyntaxLocation()
-
PyErr_SyntaxLocationEx()
-
PyErr_WarnEx()
-
PyErr_WarnExplicit()
-
PyErr_WarnFormat()
-
PyErr_WriteUnraisable()
-
PyEval_AcquireLock()
-
PyEval_AcquireThread()
-
PyEval_CallFunction() -
PyEval_CallMethod() -
PyEval_CallObjectWithKeywords() -
PyEval_EvalCode()
-
PyEval_EvalCodeEx()
-
PyEval_EvalFrame()
-
PyEval_EvalFrameEx()
-
PyEval_GetBuiltins()
-
PyEval_GetFrame()
-
PyEval_GetFuncDesc()
-
PyEval_GetFuncName()
-
PyEval_GetGlobals()
-
PyEval_GetLocals()
-
PyEval_InitThreads()
-
PyEval_ReleaseLock()
-
PyEval_ReleaseThread()
-
PyEval_RestoreThread()
-
PyEval_SaveThread()
-
PyEval_ThreadsInitialized()
-
PyExc_ArithmeticError -
PyExc_AssertionError -
PyExc_AttributeError -
PyExc_BaseException -
PyExc_BaseExceptionGroup -
PyExc_BlockingIOError -
PyExc_BrokenPipeError -
PyExc_BufferError -
PyExc_BytesWarning -
PyExc_ChildProcessError -
PyExc_ConnectionAbortedError -
PyExc_ConnectionError -
PyExc_ConnectionRefusedError -
PyExc_ConnectionResetError -
PyExc_DeprecationWarning -
PyExc_EOFError -
PyExc_EncodingWarning -
PyExc_EnvironmentError -
PyExc_Exception -
PyExc_FileExistsError -
PyExc_FileNotFoundError -
PyExc_FloatingPointError -
PyExc_FutureWarning -
PyExc_GeneratorExit -
PyExc_IOError -
PyExc_ImportError -
PyExc_ImportWarning -
PyExc_IndentationError -
PyExc_IndexError -
PyExc_InterruptedError -
PyExc_IsADirectoryError -
PyExc_KeyError -
PyExc_KeyboardInterrupt -
PyExc_LookupError -
PyExc_MemoryError -
PyExc_ModuleNotFoundError -
PyExc_NameError -
PyExc_NotADirectoryError -
PyExc_NotImplementedError -
PyExc_OSError -
PyExc_OverflowError -
PyExc_PendingDeprecationWarning -
PyExc_PermissionError -
PyExc_ProcessLookupError -
PyExc_RecursionError -
PyExc_ReferenceError -
PyExc_ResourceWarning -
PyExc_RuntimeError -
PyExc_RuntimeWarning -
PyExc_StopAsyncIteration -
PyExc_StopIteration -
PyExc_SyntaxError -
PyExc_SyntaxWarning -
PyExc_SystemError -
PyExc_SystemExit -
PyExc_TabError -
PyExc_TimeoutError -
PyExc_TypeError -
PyExc_UnboundLocalError -
PyExc_UnicodeDecodeError -
PyExc_UnicodeEncodeError -
PyExc_UnicodeError -
PyExc_UnicodeTranslateError -
PyExc_UnicodeWarning -
PyExc_UserWarning -
PyExc_ValueError -
PyExc_Warning -
PyExc_WindowsError -
PyExc_ZeroDivisionError -
PyExceptionClass_Name() -
PyException_GetCause()
-
PyException_GetContext()
-
PyException_GetTraceback()
-
PyException_SetCause()
-
PyException_SetContext()
-
PyException_SetTraceback()
-
PyFile_FromFd()
-
PyFile_GetLine()
-
PyFile_WriteObject()
-
PyFile_WriteString()
-
PyFilter_Type -
PyFloat_AsDouble()
-
PyFloat_FromDouble()
-
PyFloat_FromString()
-
PyFloat_GetInfo()
-
PyFloat_GetMax()
-
PyFloat_GetMin()
-
PyFloat_Type
-
PyFrameObject
-
PyFrame_GetCode()
-
PyFrame_GetLineNumber()
-
PyFrozenSet_New()
-
PyFrozenSet_Type
-
PyGC_Collect()
-
PyGC_Disable()
-
PyGC_Enable()
-
PyGC_IsEnabled()
-
PyGILState_Ensure()
-
PyGILState_GetThisThreadState()
-
PyGILState_Release()
-
PyGILState_STATE -
PyGetSetDef
-
PyGetSetDescr_Type -
PyImport_AddModule()
-
PyImport_AddModuleObject()
-
PyImport_AppendInittab()
-
PyImport_ExecCodeModule()
-
PyImport_ExecCodeModuleEx()
-
PyImport_ExecCodeModuleObject()
-
PyImport_ExecCodeModuleWithPathnames()
-
PyImport_GetImporter()
-
PyImport_GetMagicNumber()
-
PyImport_GetMagicTag()
-
PyImport_GetModule()
-
PyImport_GetModuleDict()
-
PyImport_Import()
-
PyImport_ImportFrozenModule()
-
PyImport_ImportFrozenModuleObject()
-
PyImport_ImportModule()
-
PyImport_ImportModuleLevel()
-
PyImport_ImportModuleLevelObject()
-
PyImport_ImportModuleNoBlock()
-
PyImport_ReloadModule()
-
PyIndex_Check()
-
PyInterpreterState
-
PyInterpreterState_Clear()
-
PyInterpreterState_Delete()
-
PyInterpreterState_Get()
-
PyInterpreterState_GetDict()
-
PyInterpreterState_GetID()
-
PyInterpreterState_New()
-
PyIter_Check()
-
PyIter_Next()
-
PyIter_Send()
-
PyListIter_Type -
PyListRevIter_Type -
PyList_Append()
-
PyList_AsTuple()
-
PyList_GetItem()
-
PyList_GetSlice()
-
PyList_Insert()
-
PyList_New()
-
PyList_Reverse()
-
PyList_SetItem()
-
PyList_SetSlice()
-
PyList_Size()
-
PyList_Sort()
-
PyList_Type
-
PyLongObject
-
PyLongRangeIter_Type -
PyLong_AsDouble()
-
PyLong_AsLong()
-
PyLong_AsLongAndOverflow()
-
PyLong_AsLongLong()
-
PyLong_AsLongLongAndOverflow()
-
PyLong_AsSize_t()
-
PyLong_AsSsize_t()
-
PyLong_AsUnsignedLong()
-
PyLong_AsUnsignedLongLong()
-
PyLong_AsUnsignedLongLongMask()
-
PyLong_AsUnsignedLongMask()
-
PyLong_AsVoidPtr()
-
PyLong_FromDouble()
-
PyLong_FromLong()
-
PyLong_FromLongLong()
-
PyLong_FromSize_t()
-
PyLong_FromSsize_t()
-
PyLong_FromString()
-
PyLong_FromUnsignedLong()
-
PyLong_FromUnsignedLongLong()
-
PyLong_FromVoidPtr()
-
PyLong_GetInfo() -
PyLong_Type
-
PyMap_Type -
PyMapping_Check()
-
PyMapping_GetItemString()
-
PyMapping_HasKey()
-
PyMapping_HasKeyString()
-
PyMapping_Items()
-
PyMapping_Keys()
-
PyMapping_Length()
-
PyMapping_SetItemString()
-
PyMapping_Size()
-
PyMapping_Values()
-
PyMem_Calloc()
-
PyMem_Free()
-
PyMem_Malloc()
-
PyMem_Realloc()
-
PyMemberDef
-
PyMemberDescr_Type -
PyMemoryView_FromBuffer()
-
PyMemoryView_FromMemory()
-
PyMemoryView_FromObject()
-
PyMemoryView_GetContiguous()
-
PyMemoryView_Type -
PyMethodDef
-
PyMethodDescr_Type -
PyModuleDef
-
PyModuleDef_Base -
PyModuleDef_Init()
-
PyModuleDef_Type -
PyModule_AddFunctions()
-
PyModule_AddIntConstant()
-
PyModule_AddObject()
-
PyModule_AddObjectRef()
-
PyModule_AddStringConstant()
-
PyModule_AddType()
-
PyModule_Create2()
-
PyModule_ExecDef()
-
PyModule_FromDefAndSpec2()
-
PyModule_GetDef()
-
PyModule_GetDict()
-
PyModule_GetFilename()
-
PyModule_GetFilenameObject()
-
PyModule_GetName()
-
PyModule_GetNameObject()
-
PyModule_GetState()
-
PyModule_New()
-
PyModule_NewObject()
-
PyModule_SetDocString()
-
PyModule_Type
-
PyNumber_Absolute()
-
PyNumber_Add()
-
PyNumber_And()
-
PyNumber_AsSsize_t()
-
PyNumber_Check()
-
PyNumber_Divmod()
-
PyNumber_Float()
-
PyNumber_FloorDivide()
-
PyNumber_InPlaceAdd()
-
PyNumber_InPlaceAnd()
-
PyNumber_InPlaceFloorDivide()
-
PyNumber_InPlaceLshift()
-
PyNumber_InPlaceMatrixMultiply()
-
PyNumber_InPlaceMultiply()
-
PyNumber_InPlaceOr()
-
PyNumber_InPlacePower()
-
PyNumber_InPlaceRemainder()
-
PyNumber_InPlaceRshift()
-
PyNumber_InPlaceSubtract()
-
PyNumber_InPlaceTrueDivide()
-
PyNumber_InPlaceXor()
-
PyNumber_Index()
-
PyNumber_Invert()
-
PyNumber_Long()
-
PyNumber_Lshift()
-
PyNumber_MatrixMultiply()
-
PyNumber_Multiply()
-
PyNumber_Negative()
-
PyNumber_Or()
-
PyNumber_Positive()
-
PyNumber_Power()
-
PyNumber_Remainder()
-
PyNumber_Rshift()
-
PyNumber_Subtract()
-
PyNumber_ToBase()
-
PyNumber_TrueDivide()
-
PyNumber_Xor()
-
PyOS_AfterFork()
-
PyOS_AfterFork_Child()
-
PyOS_AfterFork_Parent()
-
PyOS_BeforeFork()
-
PyOS_CheckStack()
-
PyOS_FSPath()
-
PyOS_InputHook
-
PyOS_InterruptOccurred() -
PyOS_double_to_string()
-
PyOS_getsig()
-
PyOS_mystricmp() -
PyOS_mystrnicmp() -
PyOS_setsig()
-
PyOS_sighandler_t -
PyOS_snprintf()
-
PyOS_string_to_double()
-
PyOS_strtol() -
PyOS_strtoul() -
PyOS_vsnprintf()
-
PyObject
-
PyObject.ob_refcnt
-
PyObject.ob_type
-
PyObject_ASCII()
-
PyObject_AsCharBuffer()
-
PyObject_AsFileDescriptor()
-
PyObject_AsReadBuffer()
-
PyObject_AsWriteBuffer()
-
PyObject_Bytes()
-
PyObject_Call()
-
PyObject_CallFunction()
-
PyObject_CallFunctionObjArgs()
-
PyObject_CallMethod()
-
PyObject_CallMethodObjArgs()
-
PyObject_CallNoArgs()
-
PyObject_CallObject()
-
PyObject_Calloc()
-
PyObject_CheckBuffer()
-
PyObject_CheckReadBuffer()
-
PyObject_ClearWeakRefs() -
PyObject_CopyData()
-
PyObject_DelItem()
-
PyObject_DelItemString() -
PyObject_Dir()
-
PyObject_Format() -
PyObject_Free()
-
PyObject_GC_Del()
-
PyObject_GC_IsFinalized()
-
PyObject_GC_IsTracked()
-
PyObject_GC_Track()
-
PyObject_GC_UnTrack()
-
PyObject_GenericGetAttr()
-
PyObject_GenericGetDict()
-
PyObject_GenericSetAttr()
-
PyObject_GenericSetDict()
-
PyObject_GetAIter()
-
PyObject_GetAttr()
-
PyObject_GetAttrString()
-
PyObject_GetBuffer()
-
PyObject_GetItem()
-
PyObject_GetIter()
-
PyObject_HasAttr()
-
PyObject_HasAttrString()
-
PyObject_Hash()
-
PyObject_HashNotImplemented()
-
PyObject_Init()
-
PyObject_InitVar()
-
PyObject_IsInstance()
-
PyObject_IsSubclass()
-
PyObject_IsTrue()
-
PyObject_Length()
-
PyObject_Malloc()
-
PyObject_Not()
-
PyObject_Realloc()
-
PyObject_Repr()
-
PyObject_RichCompare()
-
PyObject_RichCompareBool()
-
PyObject_SelfIter() -
PyObject_SetAttr()
-
PyObject_SetAttrString()
-
PyObject_SetItem()
-
PyObject_Size()
-
PyObject_Str()
-
PyObject_Type()
-
PyProperty_Type
-
PyRangeIter_Type -
PyRange_Type -
PyReversed_Type -
PySeqIter_New()
-
PySeqIter_Type
-
PySequence_Check()
-
PySequence_Concat()
-
PySequence_Contains()
-
PySequence_Count()
-
PySequence_DelItem()
-
PySequence_DelSlice()
-
PySequence_Fast()
-
PySequence_GetItem()
-
PySequence_GetSlice()
-
PySequence_In() -
PySequence_InPlaceConcat()
-
PySequence_InPlaceRepeat()
-
PySequence_Index()
-
PySequence_Length()
-
PySequence_List()
-
PySequence_Repeat()
-
PySequence_SetItem()
-
PySequence_SetSlice()
-
PySequence_Size()
-
PySequence_Tuple()
-
PySetIter_Type -
PySet_Add()
-
PySet_Clear()
-
PySet_Contains()
-
PySet_Discard()
-
PySet_New()
-
PySet_Pop()
-
PySet_Size()
-
PySet_Type
-
PySlice_AdjustIndices()
-
PySlice_GetIndices()
-
PySlice_GetIndicesEx()
-
PySlice_New()
-
PySlice_Type
-
PySlice_Unpack()
-
PyState_AddModule()
-
PyState_FindModule()
-
PyState_RemoveModule()
-
PyStructSequence_Desc
-
PyStructSequence_Field
-
PyStructSequence_GetItem()
-
PyStructSequence_New()
-
PyStructSequence_NewType()
-
PyStructSequence_SetItem()
-
PyStructSequence_UnnamedField
-
PySuper_Type -
PySys_AddWarnOption()
-
PySys_AddWarnOptionUnicode()
-
PySys_AddXOption()
-
PySys_FormatStderr()
-
PySys_FormatStdout()
-
PySys_GetObject()
-
PySys_GetXOptions()
-
PySys_HasWarnOptions() -
PySys_ResetWarnOptions()
-
PySys_SetArgv()
-
PySys_SetArgvEx()
-
PySys_SetObject()
-
PySys_SetPath()
-
PySys_WriteStderr()
-
PySys_WriteStdout()
-
PyThreadState
-
PyThreadState_Clear()
-
PyThreadState_Delete()
-
PyThreadState_Get()
-
PyThreadState_GetDict()
-
PyThreadState_GetFrame()
-
PyThreadState_GetID()
-
PyThreadState_GetInterpreter()
-
PyThreadState_New()
-
PyThreadState_SetAsyncExc()
-
PyThreadState_Swap()
-
PyThread_GetInfo() -
PyThread_ReInitTLS()
-
PyThread_acquire_lock() -
PyThread_acquire_lock_timed() -
PyThread_allocate_lock() -
PyThread_create_key()
-
PyThread_delete_key()
-
PyThread_delete_key_value()
-
PyThread_exit_thread() -
PyThread_free_lock() -
PyThread_get_key_value()
-
PyThread_get_stacksize() -
PyThread_get_thread_ident() -
PyThread_get_thread_native_id() -
PyThread_init_thread() -
PyThread_release_lock() -
PyThread_set_key_value()
-
PyThread_set_stacksize() -
PyThread_start_new_thread() -
PyThread_tss_alloc()
-
PyThread_tss_create()
-
PyThread_tss_delete()
-
PyThread_tss_free()
-
PyThread_tss_get()
-
PyThread_tss_is_created()
-
PyThread_tss_set()
-
PyTraceBack_Here() -
PyTraceBack_Print() -
PyTraceBack_Type -
PyTupleIter_Type -
PyTuple_GetItem()
-
PyTuple_GetSlice()
-
PyTuple_New()
-
PyTuple_Pack()
-
PyTuple_SetItem()
-
PyTuple_Size()
-
PyTuple_Type
-
PyTypeObject
-
PyType_ClearCache()
-
PyType_FromModuleAndSpec()
-
PyType_FromSpec()
-
PyType_FromSpecWithBases()
-
PyType_GenericAlloc()
-
PyType_GenericNew()
-
PyType_GetFlags()
-
PyType_GetModule()
-
PyType_GetModuleState()
-
PyType_GetName()
-
PyType_GetQualName()
-
PyType_GetSlot()
-
PyType_IsSubtype()
-
PyType_Modified()
-
PyType_Ready()
-
PyType_Slot
-
PyType_Spec
-
PyType_Type
-
PyUnicodeDecodeError_Create()
-
PyUnicodeDecodeError_GetEncoding()
-
PyUnicodeDecodeError_GetEnd()
-
PyUnicodeDecodeError_GetObject()
-
PyUnicodeDecodeError_GetReason()
-
PyUnicodeDecodeError_GetStart()
-
PyUnicodeDecodeError_SetEnd()
-
PyUnicodeDecodeError_SetReason()
-
PyUnicodeDecodeError_SetStart()
-
PyUnicodeEncodeError_GetEncoding()
-
PyUnicodeEncodeError_GetEnd()
-
PyUnicodeEncodeError_GetObject()
-
PyUnicodeEncodeError_GetReason()
-
PyUnicodeEncodeError_GetStart()
-
PyUnicodeEncodeError_SetEnd()
-
PyUnicodeEncodeError_SetReason()
-
PyUnicodeEncodeError_SetStart()
-
PyUnicodeIter_Type -
PyUnicodeTranslateError_GetEnd()
-
PyUnicodeTranslateError_GetObject()
-
PyUnicodeTranslateError_GetReason()
-
PyUnicodeTranslateError_GetStart()
-
PyUnicodeTranslateError_SetEnd()
-
PyUnicodeTranslateError_SetReason()
-
PyUnicodeTranslateError_SetStart()
-
PyUnicode_Append() -
PyUnicode_AppendAndDel() -
PyUnicode_AsASCIIString()
-
PyUnicode_AsCharmapString()
-
PyUnicode_AsDecodedObject() -
PyUnicode_AsDecodedUnicode() -
PyUnicode_AsEncodedObject() -
PyUnicode_AsEncodedString()
-
PyUnicode_AsEncodedUnicode() -
PyUnicode_AsLatin1String()
-
PyUnicode_AsMBCSString()
-
PyUnicode_AsRawUnicodeEscapeString()
-
PyUnicode_AsUCS4()
-
PyUnicode_AsUCS4Copy()
-
PyUnicode_AsUTF16String()
-
PyUnicode_AsUTF32String()
-
PyUnicode_AsUTF8AndSize()
-
PyUnicode_AsUTF8String()
-
PyUnicode_AsUnicodeEscapeString()
-
PyUnicode_AsWideChar()
-
PyUnicode_AsWideCharString()
-
PyUnicode_BuildEncodingMap() -
PyUnicode_Compare()
-
PyUnicode_CompareWithASCIIString()
-
PyUnicode_Concat()
-
PyUnicode_Contains()
-
PyUnicode_Count()
-
PyUnicode_Decode()
-
PyUnicode_DecodeASCII()
-
PyUnicode_DecodeCharmap()
-
PyUnicode_DecodeCodePageStateful() -
PyUnicode_DecodeFSDefault()
-
PyUnicode_DecodeFSDefaultAndSize()
-
PyUnicode_DecodeLatin1()
-
PyUnicode_DecodeLocale()
-
PyUnicode_DecodeLocaleAndSize()
-
PyUnicode_DecodeMBCS()
-
PyUnicode_DecodeMBCSStateful()
-
PyUnicode_DecodeRawUnicodeEscape()
-
PyUnicode_DecodeUTF16()
-
PyUnicode_DecodeUTF16Stateful()
-
PyUnicode_DecodeUTF32()
-
PyUnicode_DecodeUTF32Stateful()
-
PyUnicode_DecodeUTF7()
-
PyUnicode_DecodeUTF7Stateful()
-
PyUnicode_DecodeUTF8()
-
PyUnicode_DecodeUTF8Stateful()
-
PyUnicode_DecodeUnicodeEscape()
-
PyUnicode_EncodeCodePage()
-
PyUnicode_EncodeFSDefault()
-
PyUnicode_EncodeLocale()
-
PyUnicode_FSConverter()
-
PyUnicode_FSDecoder()
-
PyUnicode_Find()
-
PyUnicode_FindChar()
-
PyUnicode_Format()
-
PyUnicode_FromEncodedObject()
-
PyUnicode_FromFormat()
-
PyUnicode_FromFormatV()
-
PyUnicode_FromObject()
-
PyUnicode_FromOrdinal() -
PyUnicode_FromString()
-
PyUnicode_FromStringAndSize()
-
PyUnicode_FromWideChar()
-
PyUnicode_GetDefaultEncoding() -
PyUnicode_GetLength()
-
PyUnicode_GetSize()
-
PyUnicode_InternFromString()
-
PyUnicode_InternImmortal() -
PyUnicode_InternInPlace()
-
PyUnicode_IsIdentifier()
-
PyUnicode_Join()
-
PyUnicode_Partition() -
PyUnicode_RPartition() -
PyUnicode_RSplit() -
PyUnicode_ReadChar()
-
PyUnicode_Replace()
-
PyUnicode_Resize() -
PyUnicode_RichCompare()
-
PyUnicode_Split()
-
PyUnicode_Splitlines()
-
PyUnicode_Substring()
-
PyUnicode_Tailmatch()
-
PyUnicode_Translate()
-
PyUnicode_Type
-
PyUnicode_WriteChar()
-
PyVarObject
-
PyVarObject.ob_base -
PyVarObject.ob_size
-
PyWeakReference -
PyWeakref_GetObject()
-
PyWeakref_NewProxy()
-
PyWeakref_NewRef()
-
PyWrapperDescr_Type -
PyWrapper_New()
-
PyZip_Type -
Py_AddPendingCall()
-
Py_AtExit()
-
Py_BEGIN_ALLOW_THREADS
-
Py_BLOCK_THREADS
-
Py_BuildValue()
-
Py_BytesMain()
-
Py_CompileString()
-
Py_DecRef()
-
Py_DecodeLocale()
-
Py_END_ALLOW_THREADS
-
Py_EncodeLocale()
-
Py_EndInterpreter()
-
Py_EnterRecursiveCall()
-
Py_Exit()
-
Py_FatalError()
-
Py_FileSystemDefaultEncodeErrors -
Py_FileSystemDefaultEncoding -
Py_Finalize()
-
Py_FinalizeEx()
-
Py_GenericAlias()
-
Py_GenericAliasType
-
Py_GetBuildInfo()
-
Py_GetCompiler()
-
Py_GetCopyright()
-
Py_GetExecPrefix()
-
Py_GetPath()
-
Py_GetPlatform()
-
Py_GetPrefix()
-
Py_GetProgramFullPath()
-
Py_GetProgramName()
-
Py_GetPythonHome()
-
Py_GetRecursionLimit() -
Py_GetVersion()
-
Py_HasFileSystemDefaultEncoding -
Py_IncRef()
-
Py_Initialize()
-
Py_InitializeEx()
-
Py_Is()
-
Py_IsFalse()
-
Py_IsInitialized()
-
Py_IsNone()
-
Py_IsTrue()
-
Py_LeaveRecursiveCall()
-
Py_Main()
-
Py_MakePendingCalls() -
Py_NewInterpreter()
-
Py_NewRef()
-
Py_ReprEnter()
-
Py_ReprLeave()
-
Py_SetPath()
-
Py_SetProgramName()
-
Py_SetPythonHome()
-
Py_SetRecursionLimit() -
Py_UCS4
-
Py_UNBLOCK_THREADS
-
Py_UTF8Mode -
Py_VaBuildValue()
-
Py_Version
-
Py_XNewRef()
-
Py_buffer
-
Py_intptr_t -
Py_ssize_t
-
Py_uintptr_t -
allocfunc
-
binaryfunc
-
descrgetfunc
-
descrsetfunc
-
destructor
-
getattrfunc
-
getattrofunc
-
getiterfunc
-
getter -
hashfunc
-
initproc
-
inquiry
-
iternextfunc
-
lenfunc
-
newfunc
-
objobjargproc
-
objobjproc
-
reprfunc
-
richcmpfunc
-
setattrfunc
-
setattrofunc
-
setter -
ssizeargfunc
-
ssizeobjargproc
-
ssizessizeargfunc -
ssizessizeobjargproc -
symtable -
ternaryfunc
-
traverseproc
-
unaryfunc
-
visitproc
當(dāng)前標(biāo)題:創(chuàng)新互聯(lián)Python教程:CAPI的穩(wěn)定性
轉(zhuǎn)載來(lái)于:http://fisionsoft.com.cn/article/djioihp.html


咨詢
建站咨詢
