整数型对象
**********

所有整数都使用以任意大小的长整数对象表示。

在出错时，大多数 "PyLong_As*" API返回 "(返回值类型)-1" ，无法与一般的
数字区分开来。请使用 "PyErr_Occurred()" 来区分。

PyLongObject

   表示 Python 整数对象的 "PyObject" 子类型。

PyTypeObject PyLong_Type

   这个 "PyTypeObject" 的实例表示 Python 的整数类型。与Python层中的
   "int" 相同。

int PyLong_Check(PyObject *p)

   如果参数是 "PyLongObject" 或 "PyLongObject" 的子类型，返回 true 。

int PyLong_CheckExact(PyObject *p)

   如果参数是 "PyLongObject" 但不是 "PyLongObject" 的子类型，返回 true
   。

PyObject* PyLong_FromLong(long v)
    *Return value: New reference.*

   Return a new "PyLongObject" object from *v*, or *NULL* on failure.

   The current implementation keeps an array of integer objects for
   all integers between "-5" and "256", when you create an int in that
   range you actually just get back a reference to the existing
   object. So it should be possible to change the value of "1".  I
   suspect the behaviour of Python in this case is undefined. :-)

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

   Return a new "PyLongObject" object from a C "unsigned long", or
   *NULL* on failure.

PyObject* PyLong_FromSsize_t(Py_ssize_t v)

   Return a new "PyLongObject" object from a C "Py_ssize_t", or *NULL*
   on failure.

PyObject* PyLong_FromSize_t(size_t v)

   Return a new "PyLongObject" object from a C "size_t", or *NULL* on
   failure.

PyObject* PyLong_FromLongLong(long long v)
    *Return value: New reference.*

   Return a new "PyLongObject" object from a C "long long", or *NULL*
   on failure.

PyObject* PyLong_FromUnsignedLongLong(unsigned long long v)
    *Return value: New reference.*

   Return a new "PyLongObject" object from a C "unsigned long long",
   or *NULL* on failure.

PyObject* PyLong_FromDouble(double v)
    *Return value: New reference.*

   Return a new "PyLongObject" object from the integer part of *v*, or
   *NULL* on failure.

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

   Return a new "PyLongObject" based on the string value in *str*,
   which is interpreted according to the radix in *base*.  If *pend*
   is non-*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". If *base* is not "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" will be raised.

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

   Convert a sequence of Unicode digits to a Python integer value.
   The Unicode string is first encoded to a byte string using
   "PyUnicode_EncodeDecimal()" and then converted using
   "PyLong_FromString()".

   Deprecated since version 3.3, will be removed in version 4.0: 旧的
   "Py_UNICODE" API的一部分;请迁移到使用 "PyLong_FromUnicodeObject()"
   。

PyObject* PyLong_FromUnicodeObject(PyObject *u, int base)

   Convert a sequence of Unicode digits in the string *u* to a Python
   integer value.  The Unicode string is first encoded to a byte
   string using "PyUnicode_EncodeDecimal()" and then converted using
   "PyLong_FromString()".

   3.3 新版功能.

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

   从指针 *p* 创建一个 Python 整数。可以使用 "PyLong_AsVoidPtr()" 返回
   的指针值。

long PyLong_AsLong(PyObject *obj)

   Return a C "long" representation of *obj*.  If *obj* is not an
   instance of "PyLongObject", first call its "__int__()" method (if
   present) to convert it to a "PyLongObject".

   如果 *obj* 的值溢出了 "long" 的范围，会抛出 "OverflowError"。

   发生错误时返回 "-1" 。使用 "PyErr_Occurred()" 来消歧义。

long PyLong_AsLongAndOverflow(PyObject *obj, int *overflow)

   Return a C "long" representation of *obj*.  If *obj* is not an
   instance of "PyLongObject", first call its "__int__()" method (if
   present) to convert it to a "PyLongObject".

   If the value of *obj* is greater than "LONG_MAX" or less than
   "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" and return "-1" as usual.

   发生错误时返回 "-1" 。使用 "PyErr_Occurred()" 来消歧义。

long long PyLong_AsLongLong(PyObject *obj)

   Return a C "long long" representation of *obj*.  If *obj* is not an
   instance of "PyLongObject", first call its "__int__()" method (if
   present) to convert it to a "PyLongObject".

   如果 *obj* 的值溢出了 "long" 的范围，会抛出 "OverflowError"。

   发生错误时返回 "-1" 。使用 "PyErr_Occurred()" 来消歧义。

long long PyLong_AsLongLongAndOverflow(PyObject *obj, int *overflow)

   Return a C "long long" representation of *obj*.  If *obj* is not an
   instance of "PyLongObject", first call its "__int__()" method (if
   present) to convert it to a "PyLongObject".

   If the value of *obj* is greater than "PY_LLONG_MAX" or less than
   "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" and return "-1" as usual.

   发生错误时返回 "-1" 。使用 "PyErr_Occurred()" 来消歧义。

   3.2 新版功能.

Py_ssize_t PyLong_AsSsize_t(PyObject *pylong)

   Return a C "Py_ssize_t" representation of *pylong*.  *pylong* must
   be an instance of "PyLongObject".

   Raise "OverflowError" if the value of *pylong* is out of range for
   a "Py_ssize_t".

   发生错误时返回 "-1" 。使用 "PyErr_Occurred()" 来消歧义。

unsigned long PyLong_AsUnsignedLong(PyObject *pylong)

   Return a C "unsigned long" representation of *pylong*.  *pylong*
   must be an instance of "PyLongObject".

   Raise "OverflowError" if the value of *pylong* is out of range for
   a "unsigned long".

   Returns "(unsigned long)-1" on error. Use "PyErr_Occurred()" to
   disambiguate.

size_t PyLong_AsSize_t(PyObject *pylong)

   Return a C "size_t" representation of *pylong*.  *pylong* must be
   an instance of "PyLongObject".

   Raise "OverflowError" if the value of *pylong* is out of range for
   a "size_t".

   Returns "(size_t)-1" on error. Use "PyErr_Occurred()" to
   disambiguate.

unsigned long long PyLong_AsUnsignedLongLong(PyObject *pylong)

   Return a C "unsigned long long" representation of *pylong*.
   *pylong* must be an instance of "PyLongObject".

   Raise "OverflowError" if the value of *pylong* is out of range for
   an "unsigned long long".

   Returns "(unsigned long long)-1" on error. Use "PyErr_Occurred()"
   to disambiguate.

   在 3.1 版更改: A negative *pylong* now raises "OverflowError", not
   "TypeError".

unsigned long PyLong_AsUnsignedLongMask(PyObject *obj)

   Return a C "unsigned long" representation of *obj*.  If *obj* is
   not an instance of "PyLongObject", first call its "__int__()"
   method (if present) to convert it to a "PyLongObject".

   If the value of *obj* is out of range for an "unsigned long",
   return the reduction of that value modulo "ULONG_MAX + 1".

   发生错误时返回 "-1" 。使用 "PyErr_Occurred()" 来消歧义。

unsigned long long PyLong_AsUnsignedLongLongMask(PyObject *obj)

   Return a C "unsigned long long" representation of *obj*.  If *obj*
   is not an instance of "PyLongObject", first call its "__int__()"
   method (if present) to convert it to a "PyLongObject".

   If the value of *obj* is out of range for an "unsigned long long",
   return the reduction of that value modulo "PY_ULLONG_MAX + 1".

   发生错误时返回 "-1" 。使用 "PyErr_Occurred()" 来消歧义。

double PyLong_AsDouble(PyObject *pylong)

   Return a C "double" representation of *pylong*.  *pylong* must be
   an instance of "PyLongObject".

   Raise "OverflowError" if the value of *pylong* is out of range for
   a "double".

   Returns "-1.0" on error.  Use "PyErr_Occurred()" to disambiguate.

void* PyLong_AsVoidPtr(PyObject *pylong)

   Convert a Python integer *pylong* to a C "void" pointer. If
   *pylong* cannot be converted, an "OverflowError" will be raised.
   This is only assured to produce a usable "void" pointer for values
   created with "PyLong_FromVoidPtr()".

   Returns *NULL* on error.  Use "PyErr_Occurred()" to disambiguate.
