Integer Objects

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

PyLongObject

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

PyTypeObject PyLong_Type

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

int PyLong_Check(PyObject *p)

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

int PyLong_CheckExact(PyObject *p)

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

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

在失败时从vNULL返回新的PyLongObject对象。

当前实现为-5256之间的所有整数保留整数对象数组,当您在该范围中创建一个int时,实际上只是返回对现有目的。因此,应该可以更改1的值。我怀疑Python的行为在这种情况下是未定义的。:-)

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

在失败时从C 无符号 NULL返回新的PyLongObject

PyObject* PyLong_FromSsize_t(Py_ssize_t v)

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

PyObject* PyLong_FromSize_t(size_t v)

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

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

在失败时从C NULL返回新的PyLongObject

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

Return a new PyLongObject object from a C unsigned long long, or NULL on failure.

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

在失败时从v的整数部分或NULL返回新的PyLongObject对象。

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

根据str中的字符串值返回新的PyLongObject,根据base中的基数解释。如果pend为非NULL,则* pend将指向str中的第一个字符,号码。如果base0,则将根据str的前导字符确定基数:if str '0x''0X',将使用基数16;如果str'0o''0O'开始,将使用基数8;如果str'0b''0B'开始,将使用基数2;否则将使用基数10。如果base不是0,则它必须在236之间,包括。前导空格被忽略。如果没有数字,将会引发ValueError

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

将Unicode数字序列转换为Python整数值。首先使用PyUnicode_EncodeDecimal()将Unicode字符串编码为字节字符串,然后使用PyLong_FromString()进行转换。

从版本3.3开始弃用,将在版本4.0中删除:旧式Py_UNICODE API的一部分;请使用PyLong_FromUnicodeObject()迁移。

PyObject* PyLong_FromUnicodeObject(PyObject *u, int base)

将字符串u中的Unicode数字序列转换为Python整数值。首先使用PyUnicode_EncodeDecimal()将Unicode字符串编码为字节字符串,然后使用PyLong_FromString()进行转换。

版本3.3中的新功能。

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

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

long PyLong_AsLong(PyObject *obj)

返回obj的C long表示。如果obj不是PyLongObject的实例,则首先调用其__int__()方法(如果存在)将其转换为PyLongObject

如果obj的值超出long的范围,则引发OverflowError

long PyLong_AsLongAndOverflow(PyObject *obj, int *overflow)

返回obj的C long表示。如果obj不是PyLongObject的实例,则首先调用其__int__()方法(如果存在)将其转换为PyLongObject

如果obj的值大于LONG_MAX或小于LONG_MIN,请将* overflow设置为1-1,并返回-1;否则,将* overflow设置为0如果发生任何其他异常,将* overflow设置为0,并照常返回-1

PY_LONG_LONG PyLong_AsLongLong(PyObject *obj)

返回obj的C 如果obj不是PyLongObject的实例,则首先调用其__int__()方法(如果存在)将其转换为PyLongObject

如果obj的值超出long的范围,则引发OverflowError

PY_LONG_LONG PyLong_AsLongLongAndOverflow(PyObject *obj, int *overflow)

返回obj的C 如果obj不是PyLongObject的实例,则首先调用其__int__()方法(如果存在)将其转换为PyLongObject

如果obj的值大于PY_LLONG_MAX或小于PY_LLONG_MIN,请将* overflow设置为1-1,并返回-1;否则,将* overflow设置为0如果发生任何其他异常,将* overflow设置为0,并照常返回-1

版本3.2中的新功能。

Py_ssize_t PyLong_AsSsize_t(PyObject *pylong)

返回pylong的C Py_ssize_t表示。pylong必须是PyLongObject的实例。

如果pylong的值超出Py_ssize_t的范围,则引发OverflowError

unsigned long PyLong_AsUnsignedLong(PyObject *pylong)

返回pylong的C 无符号 pylong必须是PyLongObject的实例。

如果pylong的值超出了无符号 的范围,则引发OverflowError

size_t PyLong_AsSize_t(PyObject *pylong)

返回pylong的C size_t表示。pylong必须是PyLongObject的实例。

如果pylong的值超出size_t的范围,则引发OverflowError

unsigned PY_LONG_LONG PyLong_AsUnsignedLongLong(PyObject *pylong)

返回pylong的C 无符号 PY_LONG_LONGpylong必须是PyLongObject的实例。

如果pylong的值超出了无符号 PY_LONG_LONG的范围,则引发OverflowError

在版本3.1中更改:负向pylong现在引发OverflowError,而不是TypeError

unsigned long PyLong_AsUnsignedLongMask(PyObject *obj)

返回obj的C 无符号 如果obj不是PyLongObject的实例,则首先调用其__int__()方法(如果存在)将其转换为PyLongObject

If the value of obj is out of range for an unsigned long, return the reduction of that value modulo ULONG_MAX + 1.

unsigned PY_LONG_LONG PyLong_AsUnsignedLongLongMask(PyObject *obj)

返回obj的C 无符号 如果obj不是PyLongObject的实例,则首先调用其__int__()方法(如果存在)将其转换为PyLongObject

如果obj的值超出无符号 的范围,以PY_ULLONG_MAX + 1返回该值的减少。

double PyLong_AsDouble(PyObject *pylong)

返回pylong的C double表示。pylong必须是PyLongObject的实例。

如果pylong的值超出double的范围,则引发OverflowError

void* PyLong_AsVoidPtr(PyObject *pylong)

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