整数对象

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

错误,大多数PyLong_As* API返回(return type)-1哪个不能区分一个号码。使用 PyErr_Occurred()消除歧义

PyLongObject
这个 的子类型PyObject代表一个Python整数对象.
PyTypeObject PyLong_Type
这个的实例PyTypeObject表示Python整数类型。这是与int在Python层.
int PyLong_CheckPyObject  *p
如果它的参数是PyLongObject或的子类型PyLongObject.
int PyLong_CheckExactPyObject  *p
如果它的参数是PyLongObject,但不是PyLongObject.
的一个子类型PyObject * PyLong_FromLong long  v
Return value: New reference.

返回一个新的PyLongObject来自vNULL失败的对象.

当前实现为-5256,当你在该范围内创建一个int时,你实际上只需要返回对现有对象的引用。所以应该可以改变1。我怀疑在这种情况下Python的行为是未定义的。: – )

PyObject * PyLong_FromUnsignedLong unsigned long  v
Return value: New reference.

返回一个新的PyLongObject对象a // unsigned long,或NULL失败时

PyObject * PyLong_FromSsize_tPy_ssize_t  v
Return value: New reference.

返回一个新的PyLongObject来自C的对象Py_ssize_t, 要么NULL失败时

PyObject * PyLong_FromSize_t为size_t  v
Return value: New reference.

返回一个新的PyLongObject来自C的对象size_t, 要么NULL失败时

PyObject * PyLong_FromLongLong v
Return value: New reference.

返回一个新的PyLongObject来自C的对象long long, 要么 NULL失败时

PyObject * PyLong_FromUnsignedLongLongunsigned long long  v
Return value: New reference.

返回一个新的PyLongObject来自C的对象unsigned long long,要么 NULL失败时

PyObject * PyLong_FromDouble v
Return value: New reference.

返回一个新的PyLongObject来自v, 要么NULL失败时

PyObject * PyLong_FromString const char  *str,char  **pend,int  base
Return value: New reference.

返回一个新PyLongObject基于str中的字符串值,根据base中的基数解释。如果pend不是NULL,*pend将指向str中的第一个字符,它跟在数字的表示之后。如果base 0, str使用解释整数文字定义;在这种情况下,非零十进制数的前导零会引发ValueError。如果base不是0,它必须在236, 包括的。在基本说明符之后和数字之间的前导空格和单个单独核心被忽略。如果没有数字,ValueError将被抬起.

PyObject* PyLong_FromUnicode Py_UNICODE  *u,Py_ssize_t  length,int  base
Return value: New reference.

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

从版本3.3开始不推荐使用,将在版本4.0中删除:部分旧式Py_UNICODE API;请迁移到使用PyLong_FromUnicodeObject().

PyObject * PyLong_FromUnicodeObject PyObject  *u,int  base
Return value: New reference.

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

转换为版本3.3中的新增.

PyObject * PyLong_FromVoidPtr void  *p
Return value: New reference.

从指针p创建一个Python整数。使用PyLong_AsVoidPtr().

long PyLong_AsLong PyObject  *obj

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

提升OverflowError如果obj超出范围long.

错误时返回-1使用PyErr_Occurred()消除歧义

long PyLong_AsLongAndOverflow PyObject  *obj,int  *overflow
返回long表示obj。如果obj不是PyLongObject的实例,首先调用它的__int__()方法(如果存在)将其转换为PyLongObject.

如果obj的值大于LONG_MAX或小于LONG_MIN,设置*overflow1-1,分别和回复-1;否则,设置*overflow0。如果有任何其他异常情况设置*overflow0并像往常一样返回-1.

错误地回复-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,分别设置*overflow1-1并返回-1;否则,设置*overflow0。如果发生任何其他情况,请设置*overflow0像往常一样-1返回

错误地回复-1使用PyErr_Occurred()消除歧义

新版本3.2.

Py_ssize_t 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的值超出范围,则提高pylonga unsigned long.

在错误时返回(unsigned long)-1。使用PyErr_Occurred()消除歧义

size_t 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中更改:否定pylong现在提出OverflowError,而不是TypeError.

unsigned long PyLong_AsUnsignedLongMask PyObject  *obj
返回一个C unsigned long表示obj。如果obj不是PyLongObject的实例,首先调用它的__int__()方法(如果存在)将其转换为PyLongObject.

如果//的值为obj超出了unsigned long的范围,以模数ULONG_MAX + 1.

返回该值的减少错误时返回-1。使用PyErr_Occurred()消除歧义

长签PyLong_AsUnsignedLongLongMask PyObject  *obj
返回C unsigned long long表示obj。如果obj不是PyLongObject的实例,首先调用它的__int__()方法(如果存在)将其转换为PyLongObject.

如果//的值为obj超出了unsigned long long的范围,以模数PY_ULLONG_MAX + 1.

返回该值的减少错误时返回-1。使用PyErr_Occurred()消除歧义

双重PyLong_AsDouble PyObject  *pylong
返回C double表示pylong. pylong必须是PyLongObject.

的bean实例//如果OverflowError的值超出pylong的范围,请提高double.

错误时返回-1.0。使用PyErr_Occurred()消除歧义

void* PyLong_AsVoidPtrPyObject  *pylong
将Python整数pylong转换为C void指针。如果pylong无法转换,OverflowError将被提出。这只能保证为void创建的值生成一个可用的PyLong_FromVoidPtr().

指针。错误时返回NULL。使用PyErr_Occurred()来消除歧义

评论被关闭。