On this page
Integer Objects
所有整数都实现为任意大小的“长”整数对象。
错误时,大多数PyLong_As* API 返回(return type)-1,无法将其与数字区分开。使用PyErr_Occurred()消除歧义。
PyLongObject- PyObject的子类型表示 Python 整数对象。
PyTypeObject
PyLong_Type- PyTypeObject的此实例表示 Python 整数类型。该对象与 Python 层中的int相同。
int
PyLong_Check(PyObject ** p *)- 如果其参数是PyLongObject或PyLongObject的子类型,则返回 true。
int
PyLong_CheckExact(PyObject ** p *)- 如果其参数是PyLongObject,而不是PyLongObject的子类型,则返回 true。
PyObject *
PyLong_FromLong(长* v *)- 返回值:新参考.
从* v *返回一个新的PyLongObject对象,如果失败则返回NULL。
当前的实现为-5和256之间的所有整数保留一个整数对象数组,当您在该范围内创建 int 时,实际上实际上是返回对现有对象的引用。因此应该可以更改1的值。我怀疑在这种情况下,Python 的行为是不确定的。 :-)
- PyObject *
PyLong_FromUnsignedLong(无符号长* v *)- 返回值:新参考.
从 C unsigned long返回一个新的PyLongObject对象,如果失败则返回NULL。
- PyObject *
PyLong_FromSsize_t(Py_ssize_t * v *)- 返回值:新参考.
从 C Py_ssize_t返回一个新的PyLongObject对象,如果失败则返回NULL。
- PyObject *
PyLong_FromSize_t(size_t * v *)- 返回值:新参考.
从 C size_t返回一个新的PyLongObject对象,如果失败则返回NULL。
- PyObject *
PyLong_FromLongLong(长长* v *)- 返回值:新参考.
从 C long long返回一个新的PyLongObject对象,如果失败则返回NULL。
- PyObject *
PyLong_FromUnsignedLongLong(unsigned long long * v *)- 返回值:新参考.
从 C unsigned long long返回一个新的PyLongObject对象,如果失败则返回NULL。
- PyObject *
PyLong_FromDouble(双* v *)- 返回值:新参考.
从* v *的整数部分返回一个新的PyLongObject对象,如果失败则返回NULL。
- PyObject *
PyLong_FromString(const char *str ,char * pend *,int * base *)- 返回值:新参考.
根据* str 中的字符串值返回一个新的PyLongObject,该字符串值根据 base 中的基数进行解释。如果 pend 不是NULL,则* pend 将指向 str 中的第一个字符,该字符紧随数字的表示。如果 base 为0,则使用Integer literals定义解释 str ;在这种情况下,非零十进制数字中的前导零会引发ValueError。如果 base *不是0,则它必须介于2和36之间(包括_)。在基本说明符之后和数字之间的前导空格和单个下划线将被忽略。如果没有数字,将加ValueError。
- PyObject *
PyLong_FromUnicode(Py_UNICODE ** u *,Py_ssize_t * length *,int * base *)- 返回值:新参考.
将 Unicode 数字序列转换为 Python 整数值。
从版本 3.3 开始不推荐使用,将在版本 3.10 中删除:老式Py_UNICODE API 的一部分;请迁移到使用PyLong_FromUnicodeObject()。
将字符串* u *中的 Unicode 数字序列转换为 Python 整数值。
版本 3.3 中的新Function。
- PyObject *
PyLong_FromVoidPtr(void ** p *)- 返回值:新参考.
从指针* p *创建一个 Python 整数。可以使用PyLong_AsVoidPtr()从结果值中检索指针值。
- 长
PyLong_AsLong(PyObject ** obj *)- 返回* obj 的 C
long表示形式。如果 obj *不是PyLongObject的实例,请首先调用其index()或int()方法(如果存在)以将其转换为PyLongObject。
- 返回* obj 的 C
如果* obj *的值超出long的范围,则提高OverflowError。
错误返回-1。使用PyErr_Occurred()消除歧义。
在 3.8 版中进行了更改:如果可用,请使用index()。
从 3.8 版开始不推荐使用:不建议使用int()。
- long
PyLong_AsLongAndOverflow(PyObject *obj ,int overflow *)- 返回* obj 的 C
long表示形式。如果 obj *不是PyLongObject的实例,请首先调用其index()或int()方法(如果存在)以将其转换为PyLongObject。
- 返回* obj 的 C
如果* obj *的值大于LONG_MAX或小于LONG_MIN,则分别将 overflow 设置为1或-1,并返回-1;否则,将 overflow 设置为0。如果发生任何其他异常,将 overflow *设置为0并照常返回-1。
错误返回-1。使用PyErr_Occurred()消除歧义。
在 3.8 版中进行了更改:如果可用,请使用index()。
从 3.8 版开始不推荐使用:不建议使用int()。
- 长长
PyLong_AsLongLong(PyObject ** obj *)- 返回* obj 的 C
long long表示形式。如果 obj *不是PyLongObject的实例,请首先调用其index()或int()方法(如果存在)以将其转换为PyLongObject。
- 返回* obj 的 C
如果* obj *的值超出long long的范围,则提高OverflowError。
错误返回-1。使用PyErr_Occurred()消除歧义。
在 3.8 版中进行了更改:如果可用,请使用index()。
从 3.8 版开始不推荐使用:不建议使用int()。
- long long
PyLong_AsLongLongAndOverflow(PyObject *obj ,int overflow *)- 返回* obj 的 C
long long表示形式。如果 obj *不是PyLongObject的实例,请首先调用其index()或int()方法(如果存在)以将其转换为PyLongObject。
- 返回* obj 的 C
如果* obj *的值大于PY_LLONG_MAX或小于PY_LLONG_MIN,则分别将 overflow 设置为1或-1,并返回-1;否则,将 overflow 设置为0。如果发生任何其他异常,将 overflow *设置为0并照常返回-1。
错误返回-1。使用PyErr_Occurred()消除歧义。
3.2 版中的新Function。
在 3.8 版中进行了更改:如果可用,请使用index()。
从 3.8 版开始不推荐使用:不建议使用int()。
- Py_ssize_t
PyLong_AsSsize_t(PyObject ** pylong *)- 返回* pylong *的 C
Py_ssize_t表示形式。 * pylong *必须是PyLongObject的实例。
- 返回* pylong *的 C
如果* pylong *的值超出Py_ssize_t的范围,则提高OverflowError。
错误返回-1。使用PyErr_Occurred()消除歧义。
- 无符号长
PyLong_AsUnsignedLong(PyObject ** pylong *)- 返回* pylong *的 C
unsigned long表示形式。 * pylong *必须是PyLongObject的实例。
- 返回* pylong *的 C
如果* pylong *的值超出unsigned long的范围,则提高OverflowError。
错误返回(unsigned long)-1。使用PyErr_Occurred()消除歧义。
- size_t
PyLong_AsSize_t(PyObject ** pylong *)- 返回* pylong *的 C
size_t表示形式。 * pylong *必须是PyLongObject的实例。
- 返回* pylong *的 C
如果* pylong *的值超出size_t的范围,则提高OverflowError。
错误返回(size_t)-1。使用PyErr_Occurred()消除歧义。
- unsigned long long
PyLong_AsUnsignedLongLong(PyObject ** pylong *)- 返回* pylong *的 C
unsigned long long表示形式。 * pylong *必须是PyLongObject的实例。
- 返回* pylong *的 C
如果* pylong *的值超出unsigned long long的范围,请提高OverflowError。
错误返回(unsigned long long)-1。使用PyErr_Occurred()消除歧义。
在版本 3.1 中进行了更改:现在,负* pylong *会引发OverflowError而不是TypeError。
- 无符号长
PyLong_AsUnsignedLongMask(PyObject ** obj *)- 返回* obj 的 C
unsigned long表示形式。如果 obj *不是PyLongObject的实例,请首先调用其index()或int()方法(如果存在)以将其转换为PyLongObject。
- 返回* obj 的 C
如果* obj *的值超出unsigned long的范围,则以ULONG_MAX + 1为模返回该值的减少量。
错误返回(unsigned long)-1。使用PyErr_Occurred()消除歧义。
在 3.8 版中进行了更改:如果可用,请使用index()。
从 3.8 版开始不推荐使用:不建议使用int()。
- unsigned long long
PyLong_AsUnsignedLongLongMask(PyObject ** obj *)- 返回* obj 的 C
unsigned long long表示形式。如果 obj *不是PyLongObject的实例,请首先调用其index()或int()方法(如果存在)以将其转换为PyLongObject。
- 返回* obj 的 C
如果* obj *的值超出unsigned long long的范围,则以PY_ULLONG_MAX + 1为模返回该值的减少量。
错误返回(unsigned long long)-1。使用PyErr_Occurred()消除歧义。
在 3.8 版中进行了更改:如果可用,请使用index()。
从 3.8 版开始不推荐使用:不建议使用int()。
- 双
PyLong_AsDouble(PyObject ** pylong *)- 返回* pylong *的 C
double表示形式。 * pylong *必须是PyLongObject的实例。
- 返回* pylong *的 C
如果* pylong *的值超出double的范围,则提高OverflowError。
错误返回-1.0。使用PyErr_Occurred()消除歧义。
- 无效*
PyLong_AsVoidPtr(PyObject ** pylong *)- 将 Python 整数* pylong 转换为 C
void指针。如果 pylong *无法转换,则会引发OverflowError。仅保证为使用PyLong_FromVoidPtr()创建的值生成可用的void指针。
- 将 Python 整数* pylong 转换为 C
错误返回NULL。使用PyErr_Occurred()消除歧义。