创新互联Python教程:CAPI的稳定性

C API 的稳定性

python 的 C 语言 API 包含于向下兼容政策 PEP 387 中。C API 会跟随小版本的发布而发生变化(比如 3.9 到 3.10 的时候),不过大多数变化都是源代码级兼容的,通常只会增加新的 API。已有 API 的修改或删除,只有在废止期过后或修复严重问题时才会进行。

成都一家集口碑和实力的网站建设服务商,拥有专业的企业建站团队和靠谱的建站技术,十载企业及个人网站建设经验 ,为成都1000多家客户提供网页设计制作,网站开发,企业网站制作建设等服务,包括成都营销型网站建设,成都品牌网站建设,同时也为不同行业的客户提供网站建设、成都网站设计的服务,包括成都电商型网站制作建设,装修行业网站制作建设,传统机械行业网站建设,传统农业行业网站制作建设。在成都做网站,选网站制作建设服务商就选创新互联建站

CPython 的应用二进制接口(ABI)可以跨小版本实现前后兼容(只要以同样方式编译;参见下面的 平台的考虑 )。因此,用 Python 3.10.0 编译的代码可以在 3.10.8 上运行,反之亦然,但针对 3.9.x 和 3.10.x 则需分别进行编译。

带下划线前缀的是私有 API,如 _Py_InternalState,即便是补丁发布版本中也可能不加通知地进行改动。

应用程序二进制接口的稳定版

Python 3.2 引入了 受限 API,Python 的 C API 的一个子集。 只使用受限 API 的扩展可以被一次性编译而适用于多个 Python 版本。 受限 API 的内容 如下所示。

为了实现这一点,Python 提供了一个 稳定 ABI: 一个将在各 Python 3.x 版本中保持兼容性的符号集合。 稳定 ABI 包含了在受限 API 中暴露的符号,但还包含其他符号 – 例如,支持旧版受限 API 所需的函数。

(简单起见,本文档只讨论了 扩展,但受限 API 和稳定 ABI 对于 API 的所有用法都同样适用 – 例如,嵌入 Python 等。)

Py_LIMITED_API

请在包括 Python.h 之前定义这个宏以选择只使用受限 API,并选择受限 API 的版本。

Py_LIMITED_API 定义为对应你的扩展所支持的最低 Python 版本的 PY_VERSION_HEX 的值。 扩展无需重编译即可适用于从指定版本开始的所有 Python 3 发布版,并可使用到该版本为止所引入的受限 API。

不直接使用 PY_VERSION_HEX 宏,而是碍编码一个最小的次要版本(例如 0x030A0000 表示 Python 3.10)以便在使用未来的 Python 版本进行编译时保持稳定。

你还可以将 Py_LIMITED_API 定义为 3。 其效果与 0x03020000 相同(即 Python 3.2,引入受限 API 的版本)。

在 Windows 上,使用稳定 ABI 的扩展应当被链接到 Python3.dll 而不是版本专属的库如 python39.dll

在某些平台上,Python 将查找并载入名称中带有 abi3 标签的共享库文件 (例如 mymodule.abi3.so)。 它不会检查这样的扩展是否兼容稳定 ABI。 使用方 (或其打包工具) 需要确保这一些,例如,基于 3.10+ 受限 API 编译的扩展不可被安装于更低版本的 Python 中。

稳定 ABI 中的所有函数都会作为 Python 的共享库中的函数存在,而不仅是作为宏。 这使得它们可以在不使用 C 预处理器的语言中使用。

受限 API 的作用域和性能

受限 API 的目标是允许使用在完整 C API 中可用的任何东西,但可能会有性能上的损失。

例如,虽然 PyList_GetItem() 是可用的,但其 “不安全的” 宏版本 PyList_GET_ITEM() 则是不可用的。 这个宏的运行速度更快因为它可以利用版本专属的列表对象实现细节。

在未定义 Py_LIMITED_API 的情况下,某些 C API 函数将由宏来执行内联或替换。 定义 Py_LIMITED_API 会禁用这样的内联,允许提升 Python 的数据结构稳定性,但有可能降低性能。

通过省略 Py_LIMITED_API 定义,可以使基于版本专属的 ABI 来编译受限 API 扩展成为可能。 这能提升其在相应 Python 版本上的性能,但也将限制其兼容性。 基于 Py_LIMITED_API 进行编译将产生一个可在版本专属扩展不可用的场合分发的扩展 – 例如,针对即将发布的 Python 版本的预发布包。

受限 API 警示

请注意基于 Py_LIMITED_API 进行编译 不能 完全保证代码兼容受限 API 或稳定 ABI。 Py_LIMITED_API 仅涵盖了定义,但是一个 API 还包括其他因素,例如预期的语义等。

Py_LIMITED_API 不能处理的一个问题是附带在较低 Python 版本中无效的参数调用某个函数。 例如,考虑一个接受 NULL 作为参数的函数。 在 Python 3.9 中,NULL 现在会选择一个默认行为,但在 Python 3.8 中,该参数将被直接使用,导致一个 NULL 引用被崩溃。 类似的参数也适用于结构体的字段。

另一个问题是当定义了 Py_LIMITED_API 时某些结构体字段目前不会被隐藏,即使它们是受限 API 的一部分。

出于这些原因,我们建议用要支持的 所有 Python 小版本号来测试一个扩展,并最好是用其中 最低 的版本来编译它。

我们还建议查看所使用 API 的全部文档以检查其是否显式指明为受限 API 的一部分。 即使定义了 Py_LIMITED_API,少数私有声明还是会出于技术原因(或者甚至是作为程序缺陷在无意中)被暴露出来。

还要注意受限 API 并不必然是稳定的:在 Python 3.8 上用 Py_LIMITED_API 编译扩展意味着该扩展能在 Python 3.12 上运行,但它将不一定能用 Python 3.12 编译。 特别地,在稳定 ABI 保持稳定的情况下,部分受限 API 可能会被弃用并被移除。

平台的考虑

ABI 的稳定性不仅取决于 Python,还取决于所使用的编译器、低层库和编译器选项。 对于稳定 ABI 的目标来说,这些细节定义了一个 “平台”。 它们通常会取决于 OS 类型和处理器架构。

确保在特定平台上的所有 Python 版本都以不破坏稳定 ABI 的方式构建是每个特定 Python 分发方的责任。 来自 python.org 以及许多第三方分发商的 Windows 和 macOS 发布版都必于这种情况。

受限 API 的内容

目前,受限 API 包括下面这些项:

  • 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

网页名称:创新互联Python教程:CAPI的稳定性
分享URL:http://www.shufengxianlan.com/qtweb/news21/111521.html

网站建设、网络推广公司-创新互联,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联