整数对象

所有整数被实现成任意尺寸的 long 整数对象。

当出错时,大多数 PyLong_As* API 返回 (return type)-1 不能区分数字。使用 PyErr_Occurred() 以消除歧义。

PyLongObject

此子类型的 PyObject 表示 Python 整数对象。

PyTypeObject PyLong_Type

此实例的 PyTypeObject 表示 Python 整数类型。这是相同对象作为 int 在 Python 层。

int PyLong_Check ( PyObject  *p )

返回 True 若其自变量是 PyLongObject 或子类型的 PyLongObject .

int PyLong_CheckExact ( PyObject  *p )

返回 True 若其自变量是 PyLongObject ,但不是子类型的 PyLongObject .

PyObject * PyLong_FromLong ( long  v )
返回值:新引用。

返回新 PyLongObject 对象从 v ,或 NULL 当故障时。

当前实现保持整数对象数组对于所有整数介于 -5 and 256 ,当在该范围内创建 int 时,实际仅仅返回现有对象的引用。因此,应该可以改变值 1 。怀疑在这种情况下 Python 的行为是未定义的。)

PyObject * PyLong_FromUnsignedLong ( unsigned long  v )
返回值:新引用。

返回新 PyLongObject 对象从 C unsigned long ,或 NULL 当故障时。

PyObject * PyLong_FromSsize_t ( Py_ssize_t  v )

返回新 PyLongObject 对象从 C Py_ssize_t ,或 NULL 当故障时。

PyObject * PyLong_FromSize_t ( size_t  v )

返回新 PyLongObject 对象从 C size_t ,或 NULL 当故障时。

PyObject * PyLong_FromLongLong ( long long  v )
返回值:新引用。

返回新 PyLongObject 对象从 C long long ,或 NULL 当故障时。

PyObject * PyLong_FromUnsignedLongLong ( unsigned long long  v )
返回值:新引用。

返回新 PyLongObject 对象从 C unsigned long long ,或 NULL 当故障时。

PyObject * PyLong_FromDouble ( double  v )
返回值:新引用。

返回新 PyLongObject 对象从整数部分的 v ,或 NULL 当故障时。

PyObject * PyLong_FromString ( const char  *str , char  **pend , int  base )
返回值:新引用。

返回新 PyLongObject 基于字符串值 str , which is interpreted according to the radix in base 。若 pend 为非 NULL , *pend will point to the first character in str which follows the representation of the number. If base is 0 , str is interpreted using the 整数文字 definition; in this case, leading zeros in a non-zero decimal number raises a ValueError 。若 base 不是 0 , it must be between 2 and 36 , inclusive. Leading spaces and single underscores after a base specifier and between digits are ignored. If there are no digits, ValueError 会被引发。

PyObject * PyLong_FromUnicode ( Py_UNICODE  *u , Py_ssize_t  length , int  base )
返回值:新引用。

Convert a sequence of Unicode digits to a Python integer value. The Unicode string is first encoded to a byte string using PyUnicode_EncodeDecimal() 然后转换使用 PyLong_FromString() .

Deprecated since version 3.3, will be removed in version 4.0: Part of the old-style Py_UNICODE API;请迁移到使用 PyLong_FromUnicodeObject() .

PyObject * PyLong_FromUnicodeObject ( PyObject  *u , int  base )

转换 Unicode 数字序列在字符串中 u 到 Python 整数值。Unicode 字符串首先被编码成字节字符串使用 PyUnicode_EncodeDecimal() 然后转换使用 PyLong_FromString() .

3.3 版新增。

PyObject * PyLong_FromVoidPtr ( void  *p )
返回值:新引用。

创建 Python 整数从指针 p . The pointer value can be retrieved from the resulting value using PyLong_AsVoidPtr() .

long PyLong_AsLong ( PyObject  *obj )

返回 C long 表示为 obj 。若 obj 不是实例化的 PyLongObject ,首先调用其 __int__() 方法 (若存在) 以将它转换为 PyLongObject .

引发 OverflowError 若值 obj 超出范围对于 long .

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

long PyLong_AsLongAndOverflow ( PyObject  *obj , int  *overflow )

返回 C long 表示为 obj 。若 obj 不是实例化的 PyLongObject ,首先调用其 __int__() 方法 (若存在) 以将它转换为 PyLongObject .

若值 obj 大于 LONG_MAX 或小于 LONG_MIN , set *overflow to 1 or -1 , respectively, and return -1 ; otherwise, set *overflow to 0 . If any other exception occurs set *overflow to 0 并返回 -1 as usual.

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

long long PyLong_AsLongLong ( PyObject  *obj )

返回 C long long 表示为 obj 。若 obj 不是实例化的 PyLongObject ,首先调用其 __int__() 方法 (若存在) 以将它转换为 PyLongObject .

引发 OverflowError 若值 obj 超出范围对于 long .

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

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

返回 C long long 表示为 obj 。若 obj 不是实例化的 PyLongObject ,首先调用其 __int__() 方法 (若存在) 以将它转换为 PyLongObject .

若值 obj 大于 PY_LLONG_MAX 或小于 PY_LLONG_MIN , set *overflow to 1 or -1 , respectively, and return -1 ; otherwise, set *overflow to 0 . If any other exception occurs set *overflow to 0 并返回 -1 as usual.

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

3.2 版新增。

Py_ssize_t PyLong_AsSsize_t ( PyObject  *pylong )

返回 C Py_ssize_t 表示为 pylong . pylong 必须是实例化的 PyLongObject .

引发 OverflowError 若值 pylong 超出范围对于 Py_ssize_t .

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

unsigned long PyLong_AsUnsignedLong ( PyObject  *pylong )

返回 C unsigned long 表示为 pylong . pylong 必须是实例化的 PyLongObject .

引发 OverflowError 若值 pylong 超出范围对于 unsigned long .

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

size_t PyLong_AsSize_t ( PyObject  *pylong )

返回 C size_t 表示为 pylong . pylong 必须是实例化的 PyLongObject .

引发 OverflowError 若值 pylong 超出范围对于 size_t .

返回 (size_t)-1 当出错时。使用 PyErr_Occurred() 以消除歧义。

unsigned long long PyLong_AsUnsignedLongLong ( PyObject  *pylong )

返回 C unsigned long long 表示为 pylong . pylong 必须是实例化的 PyLongObject .

引发 OverflowError 若值 pylong 超出范围对于 unsigned long long .

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

3.1 版改变: A negative pylong 现在引发 OverflowError , not TypeError .

unsigned long PyLong_AsUnsignedLongMask ( PyObject  *obj )

返回 C unsigned long 表示为 obj 。若 obj 不是实例化的 PyLongObject ,首先调用其 __int__() 方法 (若存在) 以将它转换为 PyLongObject .

若值 obj 超出范围对于 unsigned long , return the reduction of that value modulo ULONG_MAX + 1 .

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

unsigned long long PyLong_AsUnsignedLongLongMask ( PyObject  *obj )

返回 C unsigned long long 表示为 obj 。若 obj 不是实例化的 PyLongObject ,首先调用其 __int__() 方法 (若存在) 以将它转换为 PyLongObject .

若值 obj 超出范围对于 unsigned long long , return the reduction of that value modulo PY_ULLONG_MAX + 1 .

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

double PyLong_AsDouble ( PyObject  *pylong )

返回 C double 表示为 pylong . pylong 必须是实例化的 PyLongObject .

引发 OverflowError 若值 pylong 超出范围对于 double .

返回 -1.0 当出错时。使用 PyErr_Occurred() 以消除歧义。

void* PyLong_AsVoidPtr ( PyObject  *pylong )

转换 Python 整数 pylong 到 C void 指针。若 pylong 无法转换, OverflowError will be raised. This is only assured to produce a usable void pointer for values created with PyLong_FromVoidPtr() .

返回 NULL 当出错时。使用 PyErr_Occurred() 以消除歧义。

上一话题

None 对象

下一话题

布尔对象

本页