长整数对象 — Python 文档
长整数对象
- type PyLongObject
- PyObject 的这个子类型表示一个 Python 长整数对象。
- PyTypeObject PyLong_Type
- PyTypeObject 的这个实例表示 Python 长整数类型。 这是与
long
和types.LongType
相同的对象。
- int PyLong_Check(PyObject *p)
如果其参数是 PyLongObject 或 PyLongObject 的子类型,则返回 true。
在 2.2 版更改:允许接受子类型。
- int PyLong_CheckExact(PyObject *p)
如果其参数是 PyLongObject,但不是 PyLongObject 的子类型,则返回 true。
2.2 版中的新功能。
- PyObject *PyLong_FromLong(long v)
- 失败时从 v 或 NULL 返回一个新的 PyLongObject 对象。
- PyObject *PyLong_FromUnsignedLong(unsigned long v)
- 失败时从 C
unsigned long
或 NULL 返回一个新的 PyLongObject 对象。
- PyObject *PyLong_FromSsize_t(Py_ssize_t v)
失败时从 C
Py_ssize_t
或 NULL 返回一个新的 PyLongObject 对象。2.6 版中的新功能。
- PyObject *PyLong_FromSize_t(size_t v)
失败时从 C
size_t
或 NULL 返回一个新的 PyLongObject 对象。2.6 版中的新功能。
- PyObject *PyLong_FromLongLong(PY_LONG_LONG v)
- 失败时从 C
long long
或 NULL 返回一个新的 PyLongObject 对象。
- PyObject* PyLong_FromUnsignedLongLong(unsigned PY_LONG_LONG v)
- 失败时从 C
unsigned long long
或 NULL 返回一个新的 PyLongObject 对象。
- PyObject *PyLong_FromDouble(double v)
- 失败时从 v 或 NULL 的整数部分返回一个新的 PyLongObject 对象。
- PyObject *PyLong_FromString(char *str, char **pend, int base)
- 根据 str 中的字符串值返回一个新的 PyLongObject,根据 base 中的基数进行解释。 如果 pend 是非 NULL,则 *pend 将指向 str 中的第一个字符,它跟随着数字的表示。 如果 base 是
0
,基数将根据 str 的前导字符确定:如果 str 以'0x'
开头] 或'0X'
,将使用基数 16; 如果 str 以'0'
开头,则使用基数 8; 否则将使用基数 10。 如果 base 不是0
,则它必须介于2
和36
之间,包括两者。 前导空格被忽略。 如果没有数字,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
,设置*overflow为1
或-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
,设置*overflow为1
或-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 以外的值,有符号和无符号整数都被接受。