整数型对象¶
所有整数都使用以任意大小的长整数对象表示。
在出错时,大多数 PyLong_As*
API返回 (返回类型)-1
,无法与一般的数字区分开来。请使用 PyErr_Occurred()
来区分。
-
type PyLongObject¶
- Part of the Limited API (as an opaque struct).
表示 Python 整数对象的
PyObject
子类型。
-
PyTypeObject PyLong_Type¶
- Part of the Stable ABI.
这个
PyTypeObject
的实例表示 Python 的整数类型。与Python层中的int
相同。
-
int PyLong_Check(PyObject *p)¶
如果它的参数是
PyLongObject
或PyLongObject
的子类型则返回真值。 此函数总是会成功执行。
-
int PyLong_CheckExact(PyObject *p)¶
如果它的参数是
PyLongObject
,但不是PyLongObject
的子类型则返回真值。 此函数总是会成功执行。
-
PyObject *PyLong_FromLong(long v)¶
- Return value: New reference. Part of the Stable ABI.
由 v 返回一个新的
PyLongObject
对象,失败时返回NULL
。The current implementation keeps an array of integer objects for all integers between
-5
and256
. When you create an int in that range you actually just get back a reference to the existing object.
-
PyObject *PyLong_FromUnsignedLong(unsigned long v)¶
- Return value: New reference. Part of the Stable ABI.
Return a new
PyLongObject
object from a C unsigned long, orNULL
on failure.
-
PyObject *PyLong_FromSsize_t(Py_ssize_t v)¶
- Return value: New reference. Part of the Stable ABI.
从 C
Py_ssize_t
类型返回一个新的PyLongObject
对象,如果失败则返回NULL
。
-
PyObject *PyLong_FromSize_t(size_t v)¶
- Return value: New reference. Part of the Stable ABI.
从 C
size_t
返回一个新的PyLongObject
对象,如果失败则返回NULL
。
-
PyObject *PyLong_FromLongLong(long long v)¶
- Return value: New reference. Part of the Stable ABI.
Return a new
PyLongObject
object from a C long long, orNULL
on failure.
-
PyObject *PyLong_FromUnsignedLongLong(unsigned long long v)¶
- Return value: New reference. Part of the Stable ABI.
Return a new
PyLongObject
object from a C unsigned long long, orNULL
on failure.
-
PyObject *PyLong_FromDouble(double v)¶
- Return value: New reference. Part of the Stable ABI.
从 v 的整数部分返回一个新的
PyLongObject
对象,如果失败则返回NULL
。
-
PyObject *PyLong_FromString(const char *str, char **pend, int base)¶
- Return value: New reference. Part of the Stable ABI.
Return a new
PyLongObject
based on the string value in str, which is interpreted according to the radix in base, orNULL
on failure. If pend is non-NULL
, *pend will point to the end of str on success or to the first character that could not be processed on error. If base is0
, str is interpreted using the 整数字面值 definition; in this case, leading zeros in a non-zero decimal number raises aValueError
. If base is not0
, it must be between2
and36
, inclusive. Leading and trailing whitespace and single underscores after a base specifier and between digits are ignored. If there are no digits or str is not NULL-terminated following the digits and trailing whitespace,ValueError
will be raised.
-
PyObject *PyLong_FromUnicodeObject(PyObject *u, int base)¶
- Return value: New reference.
将字符串 u 中的 Unicode 数字序列转换为 Python 整数值。
3.3 新版功能.
-
PyObject *PyLong_FromVoidPtr(void *p)¶
- Return value: New reference. Part of the Stable ABI.
从指针 p 创建一个 Python 整数。可以使用
PyLong_AsVoidPtr()
返回的指针值。
-
long PyLong_AsLong(PyObject *obj)¶
- Part of the Stable ABI.
Return a C long representation of obj. If obj is not an instance of
PyLongObject
, first call its__index__()
method (if present) to convert it to aPyLongObject
.Raise
OverflowError
if the value of obj is out of range for a long.发生错误时返回
-1
。使用PyErr_Occurred()
来消歧义。在 3.8 版更改: 如果可用将使用
__index__()
。在 3.10 版更改: This function will no longer use
__int__()
.
-
long PyLong_AsLongAndOverflow(PyObject *obj, int *overflow)¶
- Part of the Stable ABI.
Return a C long representation of obj. If obj is not an instance of
PyLongObject
, first call its__index__()
method (if present) to convert it to aPyLongObject
.If the value of obj is greater than
LONG_MAX
or less thanLONG_MIN
, set *overflow to1
or-1
, respectively, and return-1
; otherwise, set *overflow to0
. If any other exception occurs set *overflow to0
and return-1
as usual.发生错误时返回
-1
。使用PyErr_Occurred()
来消歧义。在 3.8 版更改: 如果可用将使用
__index__()
。在 3.10 版更改: This function will no longer use
__int__()
.
-
long long PyLong_AsLongLong(PyObject *obj)¶
- Part of the Stable ABI.
Return a C long long representation of obj. If obj is not an instance of
PyLongObject
, first call its__index__()
method (if present) to convert it to aPyLongObject
.Raise
OverflowError
if the value of obj is out of range for a long long.发生错误时返回
-1
。使用PyErr_Occurred()
来消歧义。在 3.8 版更改: 如果可用将使用
__index__()
。在 3.10 版更改: This function will no longer use
__int__()
.
-
long long PyLong_AsLongLongAndOverflow(PyObject *obj, int *overflow)¶
- Part of the Stable ABI.
Return a C long long representation of obj. If obj is not an instance of
PyLongObject
, first call its__index__()
method (if present) to convert it to aPyLongObject
.If the value of obj is greater than
LLONG_MAX
or less thanLLONG_MIN
, set *overflow to1
or-1
, respectively, and return-1
; otherwise, set *overflow to0
. If any other exception occurs set *overflow to0
and return-1
as usual.发生错误时返回
-1
。使用PyErr_Occurred()
来消歧义。3.2 新版功能.
在 3.8 版更改: 如果可用将使用
__index__()
。在 3.10 版更改: This function will no longer use
__int__()
.
-
Py_ssize_t PyLong_AsSsize_t(PyObject *pylong)¶
- Part of the Stable ABI.
Return a C
Py_ssize_t
representation of pylong. pylong must be an instance ofPyLongObject
.Raise
OverflowError
if the value of pylong is out of range for aPy_ssize_t
.发生错误时返回
-1
。使用PyErr_Occurred()
来消歧义。
-
unsigned long PyLong_AsUnsignedLong(PyObject *pylong)¶
- Part of the Stable ABI.
Return a C unsigned long representation of pylong. pylong must be an instance of
PyLongObject
.Raise
OverflowError
if the value of pylong is out of range for a unsigned long.Returns
(unsigned long)-1
on error. UsePyErr_Occurred()
to disambiguate.
-
size_t PyLong_AsSize_t(PyObject *pylong)¶
- Part of the Stable ABI.
Return a C
size_t
representation of pylong. pylong must be an instance ofPyLongObject
.Raise
OverflowError
if the value of pylong is out of range for asize_t
.Returns
(size_t)-1
on error. UsePyErr_Occurred()
to disambiguate.
-
unsigned long long PyLong_AsUnsignedLongLong(PyObject *pylong)¶
- Part of the Stable ABI.
Return a C unsigned long long representation of pylong. pylong must be an instance of
PyLongObject
.Raise
OverflowError
if the value of pylong is out of range for an unsigned long long.Returns
(unsigned long long)-1
on error. UsePyErr_Occurred()
to disambiguate.在 3.1 版更改: A negative pylong now raises
OverflowError
, notTypeError
.
-
unsigned long PyLong_AsUnsignedLongMask(PyObject *obj)¶
- Part of the Stable ABI.
Return a C unsigned long representation of obj. If obj is not an instance of
PyLongObject
, first call its__index__()
method (if present) to convert it to aPyLongObject
.If the value of obj is out of range for an unsigned long, return the reduction of that value modulo
ULONG_MAX + 1
.Returns
(unsigned long)-1
on error. UsePyErr_Occurred()
to disambiguate.在 3.8 版更改: 如果可用将使用
__index__()
。在 3.10 版更改: This function will no longer use
__int__()
.
-
unsigned long long PyLong_AsUnsignedLongLongMask(PyObject *obj)¶
- Part of the Stable ABI.
Return a C unsigned long long representation of obj. If obj is not an instance of
PyLongObject
, first call its__index__()
method (if present) to convert it to aPyLongObject
.If the value of obj is out of range for an unsigned long long, return the reduction of that value modulo
ULLONG_MAX + 1
.Returns
(unsigned long long)-1
on error. UsePyErr_Occurred()
to disambiguate.在 3.8 版更改: 如果可用将使用
__index__()
。在 3.10 版更改: This function will no longer use
__int__()
.
-
double PyLong_AsDouble(PyObject *pylong)¶
- Part of the Stable ABI.
Return a C double representation of pylong. pylong must be an instance of
PyLongObject
.Raise
OverflowError
if the value of pylong is out of range for a double.Returns
-1.0
on error. UsePyErr_Occurred()
to disambiguate.
-
void *PyLong_AsVoidPtr(PyObject *pylong)¶
- Part of the Stable ABI.
Convert a Python integer pylong to a C void pointer. If pylong cannot be converted, an
OverflowError
will be raised. This is only assured to produce a usable void pointer for values created withPyLong_FromVoidPtr()
.Returns
NULL
on error. UsePyErr_Occurred()
to disambiguate.