长整数对象 — Python 文档

来自菜鸟教程
Python/docs/2.7/c-api/long
跳转至:导航、​搜索

长整数对象

type PyLongObject
PyObject 的这个子类型表示一个 Python 长整数对象。
PyTypeObject PyLong_Type
PyTypeObject 的这个实例表示 Python 长整数类型。 这是与 longtypes.LongType 相同的对象。
int PyLong_Check(PyObject *p)

如果其参数是 PyLongObjectPyLongObject 的子类型,则返回 true。

在 2.2 版更改:允许接受子类型。

int PyLong_CheckExact(PyObject *p)

如果其参数是 PyLongObject,但不是 PyLongObject 的子类型,则返回 true。

2.2 版中的新功能。

PyObject *PyLong_FromLong(long v)
失败时从 vNULL 返回一个新的 PyLongObject 对象。
PyObject *PyLong_FromUnsignedLong(unsigned long v)
失败时从 C unsigned longNULL 返回一个新的 PyLongObject 对象。
PyObject *PyLong_FromSsize_t(Py_ssize_t v)

失败时从 C Py_ssize_tNULL 返回一个新的 PyLongObject 对象。

2.6 版中的新功能。

PyObject *PyLong_FromSize_t(size_t v)

失败时从 C size_tNULL 返回一个新的 PyLongObject 对象。

2.6 版中的新功能。

PyObject *PyLong_FromLongLong(PY_LONG_LONG v)
失败时从 C long longNULL 返回一个新的 PyLongObject 对象。
PyObject* PyLong_FromUnsignedLongLong(unsigned PY_LONG_LONG v)
失败时从 C unsigned long longNULL 返回一个新的 PyLongObject 对象。
PyObject *PyLong_FromDouble(double v)
失败时从 vNULL 的整数部分返回一个新的 PyLongObject 对象。
PyObject *PyLong_FromString(char *str, char **pend, int base)
根据 str 中的字符串值返回一个新的 PyLongObject,根据 base 中的基数进行解释。 如果 pend 是非 NULL,则 *pend 将指向 str 中的第一个字符,它跟随着数字的表示。 如果 base0,基数将根据 str 的前导字符确定:如果 str'0x' 开头] 或 '0X',将使用基数 16; 如果 str'0' 开头,则使用基数 8; 否则将使用基数 10。 如果 base 不是 0,则它必须介于 236 之间,包括两者。 前导空格被忽略。 如果没有数字,ValueError 将被提出。
PyObject *PyLong_FromUnicode(Py_UNICODE *u, Py_ssize_t length, int base)

将 Unicode 数字序列转换为 Python 长整数值。 第一个参数 u 指向 Unicode 字符串的第一个字符,length 给出字符数,base 是转换的基数。 基数必须在 [2, 36] 范围内; 如果超出范围,ValueError 将被提升。

1.6 版中的新功能。

2.5 版更改: 该函数使用 int 表示 长度 。 这可能需要更改您的代码才能正确支持 64 位系统。

PyObject *PyLong_FromVoidPtr(void *p)

从指针 p 创建一个 Python 整数或长整数。 可以使用 PyLong_AsVoidPtr() 从结果值中检索指针值。

1.5.2 版中的新功能。

2.5 版本变化: 如果整数大于 LONG_MAX,则返回一个正长整数。

long PyLong_AsLong(PyObject *pylong)
返回 pylong 内容的 C long 表示。 如果 pylong 大于 LONG_MAX,则会引发 OverflowError 并返回 -1
long PyLong_AsLongAndOverflow(PyObject *pylong, int *overflow)

返回 pylong 内容的 C long 表示。 如果pylong大于LONG_MAX或小于LONG_MIN,设置*overflow1-1 ,分别返回-1; 否则,将 *overflow 设置为 0。 如果发生任何其他异常(例如 TypeError 或 MemoryError),则将返回 -1 并且 *overflow 将是 0

2.7 版中的新功能。

PY_LONG_LONG PyLong_AsLongLongAndOverflow(PyObject *pylong, int *overflow)

返回 pylong 内容的 C long long 表示。 如果pylong大于PY_LLONG_MAX或小于PY_LLONG_MIN,设置*overflow1-1 ,分别返回-1; 否则,将 *overflow 设置为 0。 如果发生任何其他异常(例如 TypeError 或 MemoryError),则将返回 -1 并且 *overflow 将是 0

2.7 版中的新功能。

Py_ssize_t PyLong_AsSsize_t(PyObject *pylong)

返回 pylong 内容的 C Py_ssize_t 表示。 如果 pylong 大于 PY_SSIZE_T_MAX,则会引发 OverflowError 并返回 -1

2.6 版中的新功能。

unsigned long PyLong_AsUnsignedLong(PyObject *pylong)
返回 pylong 内容的 C unsigned long 表示。 如果 pylong 大于 ULONG_MAX,则会引发 OverflowError
PY_LONG_LONG PyLong_AsLongLong(PyObject *pylong)

从 Python 长整数返回 C long long。 如果 pylong 不能表示为 long long,则会引发 OverflowError 并返回 -1

2.2 版中的新功能。

unsigned PY_LONG_LONG PyLong_AsUnsignedLongLong(PyObject *pylong)

从 Python 长整数返回 C unsigned long long。 如果 pylong 不能表示为 unsigned long long,则会引发 OverflowError 并返回 (unsigned long long)-1

2.2 版中的新功能。

2.7 版更改: 负值 pylong 现在引发 OverflowError,而不是 TypeError

unsigned long PyLong_AsUnsignedLongMask(PyObject *io)

从 Python 长整数返回 C unsigned long,不检查溢出。

出错时返回 (unsigned long)-1。 使用 PyErr_Occurred() 消除歧义。

2.3 版中的新功能。

unsigned PY_LONG_LONG PyLong_AsUnsignedLongLongMask(PyObject *io)

从 Python 长整数返回 C unsigned long long,不检查溢出。

出错时返回 (unsigned PY_LONG_LONG)-1。 使用 PyErr_Occurred() 消除歧义。

2.3 版中的新功能。

double PyLong_AsDouble(PyObject *pylong)
返回 pylong 内容的 C double 表示。 如果 pylong 不能近似表示为 double,则会引发 OverflowError 异常并返回 -1.0
void *PyLong_AsVoidPtr(PyObject *pylong)

将 Python 整数或长整数 pylong 转换为 C void 指针。 如果 pylong 无法转换,则会引发 OverflowError。 这只能确保为使用 PyLong_FromVoidPtr() 创建的值生成可用的 void 指针。

1.5.2 版中的新功能。

2.5 版更改: 对于 0..LONG_MAX 以外的值,有符号和无符号整数都被接受。