整数型对象
在出错时,大多数 API返回 (返回值类型)-1
,无法与一般的数字区分开来。请使用 PyErr_Occurred() 来区分。
PyLongObject
表示 Python 整数对象的 子类型。
PyTypeObject PyLong_Type
这个 的实例表示 Python 的整数类型。与Python层中的 int 相同。
int PyLong_Check
( *p)
如果参数是 PyLongObject 或 的子类型,返回 true 。
int PyLong_CheckExact
(PyObject *p)
如果参数是 但不是 PyLongObject 的子类型,返回 true。
PyLong_FromLong
(long v*)
Return value: New reference.
Return a new PyLongObject object from v, or NULL on failure.
The current implementation keeps an array of integer objects for all integers between -5
and 256
, when you create an int in that range you actually just get back a reference to the existing object. So it should be possible to change the value of 1
. I suspect the behaviour of Python in this case is undefined. :-)
PyLong_FromUnsignedLong
(unsigned long v*)
Return value: New reference.
Return a new PyLongObject object from a C unsigned long
, or NULL on failure.
PyLong_FromSsize_t
(Py_ssize_t v*)
Return a new PyLongObject object from a C Py_ssize_t
, or NULL on failure.
PyLong_FromSize_t
(size_t v*)
Return a new PyLongObject object from a C size_t
, or NULL on failure.
PyLong_FromLongLong
(long long v*)
Return value: New reference.
Return a new PyLongObject object from a C long long
, or NULL on failure.
PyLong_FromUnsignedLongLong
(unsigned long long v*)
Return value: New reference.
Return a new PyLongObject object from a C unsigned long long
, or NULL on failure.
PyLong_FromDouble
(double v*)
Return value: New reference.
Return a new PyLongObject object from the integer part of v, or NULL on failure.
Return value: New reference.
Return a new based on the string value in str, which is interpreted according to the radix in base. If pend is non-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 . If base is not 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 will be raised.
PyLong_FromUnicode
(Py_UNICODE **u, Py_ssize_t length, int base)
Return value: New reference.
Convert a sequence of Unicode digits to a Python integer value. The Unicode string is first encoded to a byte string using PyUnicode_EncodeDecimal()
and then converted using .
Deprecated since version 3.3, will be removed in version 4.0: 旧的 Py_UNICODE API的一部分;请迁移到使用 。
PyObject PyLong_FromUnicodeObject
( **u, int base)
Convert a sequence of Unicode digits in the string u to a Python integer value. The Unicode string is first encoded to a byte string using PyUnicode_EncodeDecimal()
and then converted using PyLong_FromString().
3.3 新版功能.
PyLong_FromVoidPtr
(void **p)
Return value: New reference.
从指针 p 创建一个 Python 整数。可以使用 PyLong_AsVoidPtr() 返回的指针值。
long ( *obj)
Return a C long
representation of obj. If obj is not an instance of PyLongObject, first call its method (if present) to convert it to a PyLongObject.
如果 obj 的值溢出了 long
的范围,会抛出 。
发生错误时返回 -1
。使用 PyErr_Occurred() 来消歧义。
long PyLong_AsLongAndOverflow
( obj*, int overflow*)
Return a C long
representation of obj. If obj is not an instance of PyLongObject, first call its method (if present) to convert it to a PyLongObject.
If the value of obj is greater than LONG_MAX
or less than 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
and return -1
as usual.
发生错误时返回 -1
。使用 来消歧义。
long long PyLong_AsLongLong
(PyObject *obj)
Return a C long long
representation of obj. If obj is not an instance of , first call its __int__() method (if present) to convert it to a .
如果 obj 的值溢出了 long
的范围,会抛出 OverflowError。
发生错误时返回 -1
。使用 来消歧义。
long long PyLong_AsLongLongAndOverflow
(PyObject obj*, int overflow*)
Return a C long long
representation of obj. If obj is not an instance of , first call its __int__() method (if present) to convert it to a .
If the value of obj is greater than PY_LLONG_MAX
or less than 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
and return -1
as usual.
发生错误时返回 -1
。使用 PyErr_Occurred() 来消歧义。
3.2 新版功能.
Return a C representation of pylong. pylong must be an instance of .
Raise OverflowError if the value of pylong is out of range for a Py_ssize_t
.
发生错误时返回 -1
。使用 来消歧义。
unsigned long PyLong_AsUnsignedLong
(PyObject *pylong)
Return a C unsigned long
representation of pylong. pylong must be an instance of .
Raise OverflowError if the value of pylong is out of range for a unsigned long
.
Returns (unsigned long)-1
on error. Use to disambiguate.
size_t PyLong_AsSize_t
(PyObject *pylong)
Return a C size_t
representation of pylong. pylong must be an instance of .
Raise OverflowError if the value of pylong is out of range for a size_t
.
Returns (size_t)-1
on error. Use to disambiguate.
unsigned long long PyLong_AsUnsignedLongLong
(PyObject *pylong)
Return a C unsigned long long
representation of pylong. pylong must be an instance of .
Raise OverflowError if the value of pylong is out of range for an unsigned long long
.
Returns (unsigned long long)-1
on error. Use to disambiguate.
在 3.1 版更改: A negative pylong now raises OverflowError, not .
unsigned long PyLong_AsUnsignedLongMask
(PyObject *obj)
Return a C unsigned long
representation of obj. If obj is not an instance of , first call its __int__() method (if present) to convert it to a .
If the value of obj is out of range for an unsigned long
, return the reduction of that value modulo ULONG_MAX + 1
.
发生错误时返回 -1
。使用 PyErr_Occurred() 来消歧义。
unsigned long long PyLong_AsUnsignedLongLongMask
( *obj)
Return a C unsigned long long
representation of obj. If obj is not an instance of PyLongObject, first call its method (if present) to convert it to a PyLongObject.
If the value of obj is out of range for an unsigned long long
, return the reduction of that value modulo PY_ULLONG_MAX + 1
.
发生错误时返回 -1
。使用 来消歧义。
double PyLong_AsDouble
(PyObject *pylong)
Return a C double
representation of pylong. pylong must be an instance of .
Raise OverflowError if the value of pylong is out of range for a double
.
Returns -1.0
on error. Use to disambiguate.
void PyLong_AsVoidPtr
(PyObject **pylong)
Returns NULL on error. Use to disambiguate.