整数型オブジェクト (integer object)

すべての整数は任意の長さをもつ "long" 整数として実装されます。

エラーが起きると、ほとんどの PyLong_As* API は (return type)-1 を返しますが、これは数値と見分けが付きません。 見分けを付けるためには PyErr_Occurred() を使ってください。

type PyLongObject
Part of the Stable ABI.

この PyObject のサブタイプは整数型を表現します。

PyTypeObject PyLong_Type
Part of the Stable ABI.

この PyTypeObject のインスタンスは Python 整数型を表現します。これは Python レイヤにおける int と同じオブジェクトです。

int PyLong_Check(PyObject *p)

Return true if its argument is a PyLongObject or a subtype of PyLongObject. This function always succeeds.

int PyLong_CheckExact(PyObject *p)

Return true if its argument is a PyLongObject, but not a subtype of PyLongObject. This function always succeeds.

PyObject *PyLong_FromLong(long v)
Return value: New reference. Part of the Stable ABI.

v から新たな PyLongObject オブジェクトを生成して返します。失敗のときには NULL を返します。

現在の実装では、-5 から 256 までの全ての整数に対する整数オブジェクトの配列を保持するようにしており、この範囲の数を生成すると、実際には既存のオブジェクトに対する参照が返るようになっています。

PyObject *PyLong_FromUnsignedLong(unsigned long v)
Return value: New reference. Part of the Stable ABI.

Cの unsigned long から新たな PyLongObject オブジェクトを生成して返します。失敗した際には NULL を返します。

PyObject *PyLong_FromSsize_t(Py_ssize_t v)
Return value: New reference. Part of the Stable ABI.

C の Py_ssize_t 型から新たな PyLongObject オブジェクトを生成して返します。 失敗のときには NULL を返します。

PyObject *PyLong_FromSize_t(size_t v)
Return value: New reference. Part of the Stable ABI.

C の size_t 型から新たな PyLongObject オブジェクトを生成して返します。 失敗のときには NULL を返します。

PyObject *PyLong_FromLongLong(long long v)
Return value: New reference. Part of the Stable ABI.

C の long long 型から新たな PyLongObject オブジェクトを生成して返します。失敗のときには NULL を返します。

PyObject *PyLong_FromUnsignedLongLong(unsigned long long v)
Return value: New reference. Part of the Stable ABI.

C の unsigned long long 型から新たな PyLongObject オブジェクトを生成して返します。失敗のときには NULL を返します。

PyObject *PyLong_FromDouble(double v)
Return value: New reference. Part of the Stable ABI.

v の整数部から新たな PyLongObject オブジェクトを生成して返します。失敗のときには NULL を返します。

PyObject *PyLong_FromString(const char *str, char **pend, int base)
Return value: New reference. Part of the Stable ABI.

str の文字列値に基づいて、新たな PyLongObject を返します。 このとき base を基数として文字列を解釈します。 pendNULL でない場合は、 *pendstr 中で数が表現されている部分以降の先頭文字のアドレスを指しています。 base0 の場合は、 str整数リテラル の定義を使って解釈されます; この場合では、先頭に 0 がある 0 でない十進数は ValueError を送出します。 base0 でなければ、 base2 以上 36 以下の数でなければなりません。 先頭の空白、基数の指定の後や数字の間にある単一のアンダースコアは無視されます。 数字が全くない場合、 ValueError が送出されます。

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.

バージョン 3.3 で追加.

PyObject *PyLong_FromVoidPtr(void *p)
Return value: New reference. Part of the Stable ABI.

ポインタ p から Python 整数値を生成します。ポインタの値は PyLong_AsVoidPtr() を適用した結果から取得されます。

long PyLong_AsLong(PyObject *obj)
Part of the Stable ABI.

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

もし obj の値が long の範囲外であれば、 OverflowError を送出します。

エラーが起きたときに -1 を返します。 見分けを付けるためには PyErr_Occurred() を使ってください。

バージョン 3.8 で変更: 可能であれば __index__() を使うようになりました。

バージョン 3.10 で変更: This function will no longer use __int__().

long PyLong_AsLongAndOverflow(PyObject *obj, int *overflow)
Part of the Stable ABI.

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

もし、 obj の値が LONG_MAX より大きいか、 LONG_MIN より小さければ、 *overflow は、それぞれ 1-1 に設定され、 -1 を返します; さもなければ *overflow0 に設定されます。もし、ほかの例外が発生した場合は *overflow0 に設定され -1 を返します。

エラーが起きたときに -1 を返します。 見分けを付けるためには PyErr_Occurred() を使ってください。

バージョン 3.8 で変更: 可能であれば __index__() を使うようになりました。

バージョン 3.10 で変更: This function will no longer use __int__().

long long PyLong_AsLongLong(PyObject *obj)
Part of the Stable ABI.

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

もし obj の値が long long の範囲外であれば、 OverflowError を送出します。

エラーが起きたときに -1 を返します。 見分けを付けるためには PyErr_Occurred() を使ってください。

バージョン 3.8 で変更: 可能であれば __index__() を使うようになりました。

バージョン 3.10 で変更: This function will no longer use __int__().

long long PyLong_AsLongLongAndOverflow(PyObject *obj, int *overflow)
Part of the Stable ABI.

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

もし、 obj の値が LLONG_MAX より大きいか、 LLONG_MIN より小さければ、 *overflow は、それぞれ 1-1 に設定され、 -1 を返します; さもなければ *overflow0 に設定されます。もし、ほかの例外が発生した場合は *overflow0 に設定され -1 を返します。

エラーが起きたときに -1 を返します。 見分けを付けるためには PyErr_Occurred() を使ってください。

バージョン 3.2 で追加.

バージョン 3.8 で変更: 可能であれば __index__() を使うようになりました。

バージョン 3.10 で変更: This function will no longer use __int__().

Py_ssize_t PyLong_AsSsize_t(PyObject *pylong)
Part of the Stable ABI.

pylong を表す C の Py_ssize_t を返します。 pylongPyLongObject のインスタンスでなければなりません。

もし pylong の値が Py_ssize_t の範囲外であれば、 OverflowError を送出します。

エラーが起きたときに -1 を返します。 見分けを付けるためには PyErr_Occurred() を使ってください。

unsigned long PyLong_AsUnsignedLong(PyObject *pylong)
Part of the Stable ABI.

pylong を表す C の unsigned long を返します。 pylongPyLongObject のインスタンスでなければなりません。

もし pylong の値が unsigned long の範囲外であれば、 OverflowError を送出します。

エラーが起きたときに (unsigned long)-1 を返します。 見分けを付けるためには PyErr_Occurred() を使ってください。

size_t PyLong_AsSize_t(PyObject *pylong)
Part of the Stable ABI.

pylong を表す C の size_t を返します。 pylongPyLongObject のインスタンスでなければなりません。

もし pylong の値が size_t の範囲外であれば、 OverflowError を送出します。

エラーが起きたときに (size_t)-1 を返します。 見分けを付けるためには PyErr_Occurred() を使ってください。

unsigned long long PyLong_AsUnsignedLongLong(PyObject *pylong)
Part of the Stable ABI.

pylong を表す C の unsigned long long を返します。 pylongPyLongObject のインスタンスでなければなりません。

もし pylong の値が unsigned long long の範囲外であれば、 OverflowError を送出します。

エラーが起きたときに (unsigned long long)-1 を返します。 見分けを付けるためには PyErr_Occurred() を使ってください。

バージョン 3.1 で変更: pylong を指定した際に TypeError ではなく、 OverflowError を送出するようになりました。

unsigned long PyLong_AsUnsignedLongMask(PyObject *obj)
Part of the Stable ABI.

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

obj の値が unsigned long の範囲から外れていた場合は、 ULONG_MAX + 1 を法とした剰余を返します。

エラーが起きたときに (unsigned long)-1 を返します。 見分けを付けるためには PyErr_Occurred() を使ってください。

バージョン 3.8 で変更: 可能であれば __index__() を使うようになりました。

バージョン 3.10 で変更: This function will no longer use __int__().

unsigned long long PyLong_AsUnsignedLongLongMask(PyObject *obj)
Part of the Stable ABI.

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

obj の値が unsigned long long の範囲から外れていた場合は、 ULLONG_MAX + 1 を法とした剰余を返します。

エラーが起きたときに (unsigned long long)-1 を返します。 見分けを付けるためには PyErr_Occurred() を使ってください。

バージョン 3.8 で変更: 可能であれば __index__() を使うようになりました。

バージョン 3.10 で変更: This function will no longer use __int__().

double PyLong_AsDouble(PyObject *pylong)
Part of the Stable ABI.

pylong を表す C の double を返します。 pylongPyLongObject のインスタンスでなければなりません。

もし pylong の値が double の範囲外であれば、 OverflowError を送出します。

エラーが起きたときに -1.0 を返します。 見分けを付けるためには PyErr_Occurred() を使ってください。

void *PyLong_AsVoidPtr(PyObject *pylong)
Part of the Stable ABI.

Python の整数型を指す pylong を、 C の void ポインタに変換します。 pylong を変換できなければ、 OverflowError を送出します。この関数は PyLong_FromVoidPtr() で値を生成するときに使うような void ポインタ型を生成できるだけです。

エラーが起きたときに NULL を返します。 見分けを付けるためには PyErr_Occurred() を使ってください。