所有整数被实现成任意尺寸的 long 整数对象。
当出错时,大多数
PyLong_As*
API 返回
(return
type)-1
不能区分数字。使用
PyErr_Occurred()
以消除歧义。
PyLong_Type
¶
此实例的
PyTypeObject
表示 Python 整数类型。这是相同对象作为
int
在 Python 层。
PyLong_Check
(
PyObject
*p
)
¶
返回 True 若其自变量是
PyLongObject
或子类型的
PyLongObject
.
PyLong_CheckExact
(
PyObject
*p
)
¶
返回 True 若其自变量是
PyLongObject
,但不是子类型的
PyLongObject
.
PyLong_FromLong
(
long
v
)
¶
返回新
PyLongObject
对象从
v
,或
NULL
当故障时。
当前实现保持整数对象数组对于所有整数介于
-5
and
256
,当在该范围内创建 int 时,实际仅仅返回现有对象的引用。因此,应该可以改变值
1
。怀疑在这种情况下 Python 的行为是未定义的。)
PyLong_FromUnsignedLong
(
unsigned long
v
)
¶
返回新
PyLongObject
对象从 C
unsigned
long
,或
NULL
当故障时。
PyLong_FromSsize_t
(
Py_ssize_t
v
)
¶
返回新
PyLongObject
对象从 C
Py_ssize_t
,或
NULL
当故障时。
PyLong_FromSize_t
(
size_t
v
)
¶
返回新
PyLongObject
对象从 C
size_t
,或
NULL
当故障时。
PyLong_FromLongLong
(
long long
v
)
¶
返回新
PyLongObject
对象从 C
long
long
,或
NULL
当故障时。
PyLong_FromUnsignedLongLong
(
unsigned long long
v
)
¶
返回新
PyLongObject
对象从 C
unsigned
long
long
,或
NULL
当故障时。
PyLong_FromDouble
(
double
v
)
¶
返回新
PyLongObject
对象从整数部分的
v
,或
NULL
当故障时。
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
会被引发。
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()
.
PyLong_FromUnicodeObject
(
PyObject
*u
, int
base
)
¶
转换 Unicode 数字序列在字符串中
u
到 Python 整数值。Unicode 字符串首先被编码成字节字符串使用
PyUnicode_EncodeDecimal()
然后转换使用
PyLong_FromString()
.
3.3 版新增。
PyLong_FromVoidPtr
(
void
*p
)
¶
创建 Python 整数从指针
p
. The pointer value can be retrieved from the resulting value using
PyLong_AsVoidPtr()
.
PyLong_AsLong
(
PyObject
*obj
)
¶
返回 C
long
表示为
obj
。若
obj
不是实例化的
PyLongObject
,首先调用其
__int__()
方法 (若存在) 以将它转换为
PyLongObject
.
引发
OverflowError
若值
obj
超出范围对于
long
.
返回
-1
当出错时。使用
PyErr_Occurred()
以消除歧义。
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()
以消除歧义。
PyLong_AsLongLong
(
PyObject
*obj
)
¶
返回 C
long
long
表示为
obj
。若
obj
不是实例化的
PyLongObject
,首先调用其
__int__()
方法 (若存在) 以将它转换为
PyLongObject
.
引发
OverflowError
若值
obj
超出范围对于
long
.
返回
-1
当出错时。使用
PyErr_Occurred()
以消除歧义。
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 版新增。
PyLong_AsSsize_t
(
PyObject
*pylong
)
¶
返回 C
Py_ssize_t
表示为
pylong
.
pylong
必须是实例化的
PyLongObject
.
引发
OverflowError
若值
pylong
超出范围对于
Py_ssize_t
.
返回
-1
当出错时。使用
PyErr_Occurred()
以消除歧义。
PyLong_AsUnsignedLong
(
PyObject
*pylong
)
¶
返回 C
unsigned
long
表示为
pylong
.
pylong
必须是实例化的
PyLongObject
.
引发
OverflowError
若值
pylong
超出范围对于
unsigned
long
.
返回
(unsigned
long)-1
当出错时。使用
PyErr_Occurred()
以消除歧义。
PyLong_AsSize_t
(
PyObject
*pylong
)
¶
返回 C
size_t
表示为
pylong
.
pylong
必须是实例化的
PyLongObject
.
引发
OverflowError
若值
pylong
超出范围对于
size_t
.
返回
(size_t)-1
当出错时。使用
PyErr_Occurred()
以消除歧义。
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
.
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()
以消除歧义。
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()
以消除歧义。
PyLong_AsDouble
(
PyObject
*pylong
)
¶
返回 C
double
表示为
pylong
.
pylong
必须是实例化的
PyLongObject
.
引发
OverflowError
若值
pylong
超出范围对于
double
.
返回
-1.0
当出错时。使用
PyErr_Occurred()
以消除歧义。
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()
以消除歧义。