整數型對象?

所有整數都使用以任意大小的長整數對象表示。

在出錯時,大多數 PyLong_As* API返回 (返回值類型)-1 ,無法與一般的數字區分開來。請使用 PyErr_Occurred() 來區分。

PyLongObject?

表示 Python 整數對象的 PyObject 子類型。

PyTypeObject PyLong_Type?

這個 PyTypeObject 的實例表示 Python 的整數類型。與Python層中的 int 相同。

int PyLong_Check(PyObject?*p)?

如果參數是 PyLongObjectPyLongObject 的子類型,返回 true 。

int PyLong_CheckExact(PyObject?*p)?

如果參數是 PyLongObject 但不是 PyLongObject 的子類型,返回 true。

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

v 返回一個新的 PyLongObject 對象,失敗時返回 NULL

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.

由 C unsigned long 類型返回一個新的 PyLongObject 對象,失敗時返回 NULL

PyObject* PyLong_FromSsize_t(Py_ssize_t?v)?
Return value: New reference.

從 C Py_ssize_t 類型返回一個新的 PyLongObject 對象,如果失敗則返回``NULL``。

PyObject* PyLong_FromSize_t(size_t?v)?
Return value: New reference.

從 C size_t 返回一個新的 PyLongObject 對象,如果失敗則返回``NULL``。

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

從 C long long 返回一個新的 PyLongObject 對象,失敗時返回``NULL``。

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

從 C unsigned long long 返回一個新的 PyLongObject 對象,失敗時返回``NULL``。

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

v 的整數部分返回一個新的 PyLongObject 對象,如果失敗則返回``NULL``。

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

根據 str 字符串值返回一個新的 PyLongObjectbase 指定基數。如果 pend 不是 NULL/*pend 將指向 str 中表示這個數字部分的后面的第一個字符。如果 base0str 將使用 整型數字面值 定義來解釋;在這種情況下,一個非零的十進制數中的前導零會引發一個 ValueError 。如果 base 不是 0 ,它必須在 2 和` 36` 之間,包括2和36。基數說明符后以及數字之間的前導空格、單下劃線將被忽略。如果沒有數字,將引發 ValueError

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)?
Return value: New reference.

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 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.

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

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.

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

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.