普通整数对象 — Python 文档
来自菜鸟教程
Python/docs/2.7/c-api/int
普通整数对象
- type PyIntObject
- PyObject 的这个子类型表示一个 Python 整数对象。
- PyTypeObject PyInt_Type
- PyTypeObject 的这个实例表示 Python 纯整数类型。 这是与
int
和types.IntType
相同的对象。
- int PyInt_Check(PyObject *o)
如果 o 的类型为 PyInt_Type 或 PyInt_Type 的子类型,则返回 true。
在 2.2 版更改:允许接受子类型。
- int PyInt_CheckExact(PyObject *o)
如果 o 的类型为 PyInt_Type,但不是 PyInt_Type 的子类型,则返回 true。
2.2 版中的新功能。
- PyObject *PyInt_FromString(char *str, char **pend, int base)
- 根据 str 中的字符串值返回一个新的 PyIntObject 或 PyLongObject,根据 base 中的基数进行解释。 如果 pend 是非 NULL,则
*pend
将指向 str 中的第一个字符,它跟随着数字的表示。 如果 base 是0
,基数将根据 str 的前导字符确定:如果 str 以'0x'
开头] 或'0X'
,将使用基数 16; 如果 str 以'0'
开头,则使用基数 8; 否则将使用基数 10。 如果 base 不是0
,则它必须介于2
和36
之间,包括两者。 前导空格被忽略。 如果没有数字,ValueError
将被提出。 如果字符串表示的数字太大而无法包含在机器的long int
类型中并且溢出警告被抑制,则将返回 PyLongObject。 如果未抑制溢出警告,则在这种情况下将返回 NULL。
- PyObject *PyInt_FromLong(long ival)
创建一个值为 ival 的新整数对象。
当前的实现为
-5
和256
之间的所有整数保留了一个整数对象数组,当您在该范围内创建一个 int 时,您实际上只是返回对现有对象的引用。 所以应该可以改变1
的值。 我怀疑在这种情况下 Python 的行为是未定义的。 :-)
- PyObject *PyInt_FromSsize_t(Py_ssize_t ival)
创建一个值为 ival 的新整数对象。 如果该值大于
LONG_MAX
或小于LONG_MIN
,则返回一个长整型对象。2.5 版中的新功能。
- PyObject *PyInt_FromSize_t(size_t ival)
创建一个值为 ival 的新整数对象。 如果值超过
LONG_MAX
,则返回一个长整型对象。2.5 版中的新功能。
- long PyInt_AsLong(PyObject *io)
- 将首先尝试将对象强制转换为 PyIntObject,如果它还不是一个,然后返回其值。 如果有错误,则返回
-1
,调用者应该检查PyErr_Occurred()
是否有错误,或者值是否恰好是-1
。
- long PyInt_AS_LONG(PyObject *io)
- 返回对象 io 的值。 不执行错误检查。
- unsigned long PyInt_AsUnsignedLongMask(PyObject *io)
将首先尝试将对象强制转换为 PyIntObject 或 PyLongObject,如果它还不是一个,然后将其值作为 unsigned long 返回。 此函数不检查溢出。
2.3 版中的新功能。
- unsigned PY_LONG_LONG PyInt_AsUnsignedLongLongMask(PyObject *io)
将首先尝试将对象强制转换为 PyIntObject 或 PyLongObject(如果它还不是一个),然后将其值作为 unsigned long long 返回,而不检查溢出。
2.3 版中的新功能。
- Py_ssize_t PyInt_AsSsize_t(PyObject *io)
将首先尝试将对象转换为 PyIntObject 或 PyLongObject,如果它还不是一个,然后将其值返回为
Py_ssize_t
。2.5 版中的新功能。
- long PyInt_GetMax()
- 返回系统关于它可以处理的最大整数的想法(
LONG_MAX
,如系统头文件中所定义)。
- int PyInt_ClearFreeList()
清除整数空闲列表。 返回无法释放的项目数。
2.6 版中的新功能。