普通整数对象

  • PyIntObject

    • PyObject的子类型表示 Python 整数对象。
  • PyTypeObject PyInt_Type

    • PyTypeObject的此实例表示 Python 普通整数类型。这是与inttypes.IntType相同的对象。

在版本 2.2 中更改:接受允许的子类型。

2.2 版中的新Function。

  • PyObject * PyInt_FromString(char *str ,char * pend *,int * base *)
    • 返回值:新参考.

根据* str 中的字符串值返回一个新的PyIntObjectPyLongObject,该字符串值根据 base 中的基数进行解释。如果 pend 不为 NULL *pend将指向 str 中的第一个字符,该字符紧随数字的表示。如果 base 0,则基数将根据 str 的前导字符确定:如果 str '0x''0X'开头,则将使用基数 16;否则,将使用基数 16.如果 str '0'开头,则将使用基数 8;否则将使用基数 10.如果 base 不是0,则它必须在236之间(包括两者)。前导空格将被忽略。如果没有数字,将加ValueError。如果字符串表示的数字太大而无法包含在机器的long int类型中,并且溢出警告被抑制,则将返回PyLongObject。如果未禁止溢出警告,则在这种情况下将返回 NULL *。

  • PyObject * PyInt_FromLong(长* ival *)
    • 返回值:新参考.

创建一个新的整数对象,其值为* ival *。

当前的实现为-5256之间的所有整数保留一个整数对象数组,当您在该范围内创建 int 时,实际上只是返回对现有对象的引用。因此应该可以更改1的值。我怀疑在这种情况下,Python 的行为是不确定的。 :-)

  • PyObject * PyInt_FromSsize_t(Py_ssize_t * ival *)
    • 返回值:新参考.

创建一个新的整数对象,其值为* ival *。如果该值大于LONG_MAX或小于LONG_MIN,则返回一个长整数对象。

2.5 版的新Function。

  • PyObject * PyInt_FromSize_t(size_t * ival *)
    • 创建一个新的整数对象,其值为* ival *。如果该值超过LONG_MAX,则返回一个长整数对象。

2.5 版的新Function。

  • PyInt_AsLong(PyObject ** io *)

    • 将首先try将对象转换为PyIntObject,如果还不是一个,则返回其值。如果存在错误,则返回-1,并且调用方应检查PyErr_Occurred()以确定是否存在错误,或者该值是否恰好是-1
  • PyInt_AS_LONG(PyObject ** io *)

    • 返回对象* io *的值。不执行错误检查。
  • 无符号长PyInt_AsUnsignedLongMask(PyObject ** io *)

    • 将首先try将对象转换为PyIntObjectPyLongObject(如果尚未转换为对象),然后将其值返回为 unsigned long。此Function不检查溢出。

2.3 版的新Function。

  • 未签名的 PY_LONG_LONG PyInt_AsUnsignedLongLongMask(PyObject ** io *)
    • 将首先try将对象转换为PyIntObjectPyLongObject(如果尚未转换为对象),然后将其值返回为 unsigned long long,而不检查是否溢出。

2.3 版的新Function。

  • Py_ssize_t PyInt_AsSsize_t(PyObject ** io *)
    • 将首先try将对象转换为PyIntObjectPyLongObject(如果尚未转换为该对象),然后将其值返回为Py_ssize_t

2.5 版的新Function。

  • PyInt_GetMax()
    • 返回系统可以处理的最大整数的概念(LONG_MAX,如系统头文件中所定义)。
  • int PyInt_ClearFreeList()
    • 清除整数自由列表。返回无法释放的项目数。

2.6 版的新Function。