整数对象 – 具体对象层(Python教程)(参考资料)
整数对象
所有整数都实现为任意大小的“长”整数对象.
错误,大多数PyLong_As* API返回(return type)-1哪个不能区分一个号码。使用 PyErr_Occurred()消除歧义
PyLongObject- 这个 的子类型
PyObject代表一个Python整数对象.
- int
PyLong_Check(的PyObject *p) - 如果它的参数是
PyLongObject或的子类型PyLongObject.
- 的一个子类型PyObject *
PyLong_FromLong( long v) - Return value: New reference.
返回一个新的
PyLongObject来自v或NULL失败的对象.当前实现为
-5和256,当你在该范围内创建一个int时,你实际上只需要返回对现有对象的引用。所以应该可以改变1。我怀疑在这种情况下Python的行为是未定义的。: – )
- PyObject *
PyLong_FromSsize_t(Py_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_FromUnsignedLongLong(unsigned 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中的第一个字符,它跟在数字的表示之后。如果base0, str使用解释整数文字定义;在这种情况下,非零十进制数的前导零会引发ValueError。如果base不是0,它必须在2和36, 包括的。在基本说明符之后和数字之间的前导空格和单个单独核心被忽略。如果没有数字,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_UNICODEAPI;请迁移到使用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.
- long
PyLong_AsLongAndOverflow( PyObject *obj,int *overflow) - 返回
long表示obj。如果obj不是PyLongObject的实例,首先调用它的__int__()方法(如果存在)将其转换为PyLongObject.如果obj的值大于
LONG_MAX或小于LONG_MIN,设置*overflow到1或-1,分别和回复-1;否则,设置*overflow到0。如果有任何其他异常情况设置*overflow到0并像往常一样返回-1.
- 长龙
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,分别设置*overflow到1或-1并返回-1;否则,设置*overflow到0。如果发生任何其他情况,请设置*overflow至0像往常一样-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的值超出范围,则提高pylongaunsigned 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_AsVoidPtr(PyObject *pylong) - 将Python整数pylong转换为C
void指针。如果pylong无法转换,OverflowError将被提出。这只能保证为void创建的值生成一个可用的PyLong_FromVoidPtr().指针。错误时返回NULL。使用
PyErr_Occurred()来消除歧义
评论被关闭。