整型对象

所有整数都实现为任意大小的“长”整数对象。

关于错误,最多 PyLong_As* API返回 (return type)-1 无法与数字区分。使用 PyErr_Occurred() 消除歧义。

type PyLongObject

这种subtype PyObject 表示一个python整数对象。

PyTypeObject PyLong_Type

此实例 PyTypeObject 表示python整数类型。这是同一个对象 int 在python层中。

int PyLong_Check(PyObject *p)

如果其参数为 PyLongObject 或其子类型 PyLongObject 。此功能总是成功的。

int PyLong_CheckExact(PyObject *p)

如果其参数为 PyLongObject ,但不是的子类型 PyLongObject 。此功能总是成功的。

PyObject *PyLong_FromLong(long v)
Return value: New reference.

返回一个新的 PyLongObject 对象从 vNULL 失败论。

当前实现为介于 -5256 ,在该范围内创建int时,实际上只需返回对现有对象的引用。

PyObject *PyLong_FromUnsignedLong(unsigned long v)
Return value: New reference.

返回一个新的 PyLongObject 来自C的对象 unsigned longNULL 失败论。

PyObject *PyLong_FromSsize_t(Py_ssize_t v)
Return value: New reference.

返回一个新的 PyLongObject 来自C的对象 Py_ssize_tNULL 失败论。

PyObject *PyLong_FromSize_t(size_t v)
Return value: New reference.

返回一个新的 PyLongObject 来自C的对象 size_tNULL 失败论。

PyObject *PyLong_FromLongLong(long long v)
Return value: New reference.

返回一个新的 PyLongObject 来自C的对象 long longNULL 失败论。

PyObject *PyLong_FromUnsignedLongLong(unsigned long long v)
Return value: New reference.

返回一个新的 PyLongObject 来自C的对象 unsigned long longNULL 失败论。

PyObject *PyLong_FromDouble(double v)
Return value: New reference.

返回一个新的 PyLongObject 对象的整数部分 vNULL 失败论。

PyObject *PyLong_FromString(const char *str, char **pend, int base)
Return value: New reference.

返回一个新的 PyLongObject 基于中的字符串值 str ,根据中的基数解释。 base . 如果 pend 是非-NULL`, *\*pend* 将指向中的第一个字符 *str* 它跟在数字的表示后面。如果 *base* ``0str 使用 整数字面值 定义;在这种情况下,非零十进制数的前导零会引发 ValueError .如果 base 不是 0 ,必须介于 236 包括在内。基本说明符后和数字之间的前导空格和单下划线将被忽略。如果没有数字, ValueError 将被提升。

PyObject *PyLong_FromUnicodeObject(PyObject *u, int base)
Return value: New reference.

转换字符串中的Unicode数字序列 u 一个Python整数值。

3.3 新版功能.

PyObject *PyLong_FromVoidPtr(void *p)
Return value: New reference.

从指针创建python整数 p . 可以使用以下方法从结果值中检索指针值: PyLong_AsVoidPtr() .

long PyLong_AsLong(PyObject *obj)

返回C long 代表 obj . 如果 obj 不是的实例 PyLongObject ,首先称之为 __index__() 方法(如果存在)将其转换为 PyLongObject .

提高 OverflowError 如果值 obj 超出范围 long .

返回 -1 关于错误。使用 PyErr_Occurred() 消除歧义。

在 3.8 版更改: 使用 __index__() 如果有的话。

在 3.10 版更改: 此函数将不再使用 __int__() .

long PyLong_AsLongAndOverflow(PyObject *obj, int *overflow)

返回C long 代表 obj . 如果 obj 不是的实例 PyLongObject ,首先称之为 __index__() 方法(如果存在)将其转换为 PyLongObject .

如果值 obj 大于 LONG_MAX 或少于 LONG_MIN ,集合 *overflow1-1 ,分别返回 -1 ;否则,设置 *overflow0 . 如果发生任何其他异常,则设置 *overflow0 然后返回 -1 像往常一样。

返回 -1 关于错误。使用 PyErr_Occurred() 消除歧义。

在 3.8 版更改: 使用 __index__() 如果有的话。

在 3.10 版更改: 此函数将不再使用 __int__() .

long long PyLong_AsLongLong(PyObject *obj)

返回C long long 代表 obj . 如果 obj 不是的实例 PyLongObject ,首先称之为 __index__() 方法(如果存在)将其转换为 PyLongObject .

提高 OverflowError 如果值 obj 超出范围 long long .

返回 -1 关于错误。使用 PyErr_Occurred() 消除歧义。

在 3.8 版更改: 使用 __index__() 如果有的话。

在 3.10 版更改: 此函数将不再使用 __int__() .

long long PyLong_AsLongLongAndOverflow(PyObject *obj, int *overflow)

返回C long long 代表 obj . 如果 obj 不是的实例 PyLongObject ,首先称之为 __index__() 方法(如果存在)将其转换为 PyLongObject .

如果值 obj 大于 LLONG_MAX 或少于 LLONG_MIN ,集合 *overflow1-1 ,分别返回 -1 ;否则,设置 *overflow0 . 如果发生任何其他异常,则设置 *overflow0 然后返回 -1 像往常一样。

返回 -1 关于错误。使用 PyErr_Occurred() 消除歧义。

3.2 新版功能.

在 3.8 版更改: 使用 __index__() 如果有的话。

在 3.10 版更改: 此函数将不再使用 __int__() .

Py_ssize_t PyLong_AsSsize_t(PyObject *pylong)

返回C Py_ssize_t 代表 派龙 . 派龙 必须是的实例 PyLongObject .

提高 OverflowError 如果值 派龙 超出范围 Py_ssize_t .

返回 -1 关于错误。使用 PyErr_Occurred() 消除歧义。

unsigned long PyLong_AsUnsignedLong(PyObject *pylong)

返回C unsigned long 代表 派龙 . 派龙 必须是的实例 PyLongObject .

提高 OverflowError 如果值 派龙 超出范围 unsigned long .

返回 (unsigned long)-1 关于错误。使用 PyErr_Occurred() 消除歧义。

size_t PyLong_AsSize_t(PyObject *pylong)

返回C size_t 代表 派龙 . 派龙 必须是的实例 PyLongObject .

提高 OverflowError 如果值 派龙 超出范围 size_t .

返回 (size_t)-1 关于错误。使用 PyErr_Occurred() 消除歧义。

unsigned long long PyLong_AsUnsignedLongLong(PyObject *pylong)

返回C unsigned long long 代表 派龙 . 派龙 必须是的实例 PyLongObject .

提高 OverflowError 如果值 派龙 超出范围 unsigned long long .

返回 (unsigned long long)-1 关于错误。使用 PyErr_Occurred() 消除歧义。

在 3.1 版更改: 否定的 派龙 现在提出 OverflowError 不是 TypeError .

unsigned long PyLong_AsUnsignedLongMask(PyObject *obj)

返回C unsigned long 代表 obj . 如果 obj 不是的实例 PyLongObject ,首先称之为 __index__() 方法(如果存在)将其转换为 PyLongObject .

如果值 obj 超出范围 unsigned long ,返回该值模的约简 ULONG_MAX + 1 .

返回 (unsigned long)-1 关于错误。使用 PyErr_Occurred() 消除歧义。

在 3.8 版更改: 使用 __index__() 如果有的话。

在 3.10 版更改: 此函数将不再使用 __int__() .

unsigned long long PyLong_AsUnsignedLongLongMask(PyObject *obj)

返回C unsigned long long 代表 obj . 如果 obj 不是的实例 PyLongObject ,首先称之为 __index__() 方法(如果存在)将其转换为 PyLongObject .

如果值 obj 超出范围 unsigned long long ,返回该值模的约简 ULLONG_MAX + 1 .

返回 (unsigned long long)-1 关于错误。使用 PyErr_Occurred() 消除歧义。

在 3.8 版更改: 使用 __index__() 如果有的话。

在 3.10 版更改: 此函数将不再使用 __int__() .

double PyLong_AsDouble(PyObject *pylong)

返回C double 代表 派龙 . 派龙 必须是的实例 PyLongObject .

提高 OverflowError 如果值 派龙 超出范围 double .

返回 -1.0 关于错误。使用 PyErr_Occurred() 消除歧义。

void *PyLong_AsVoidPtr(PyObject *pylong)

转换python整数 派龙 到C void 指针。如果 派龙 无法转换,一个 OverflowError 将被引发。这只能保证产生可用的 void 用于创建值的指针 PyLong_FromVoidPtr() .

返回 NULL 关于错误。使用 PyErr_Occurred() 消除歧义。