整数型オブジェクト (integer object)¶
すべての整数は任意の長さをもつ "long" 整数として実装されます。
エラーが起きると、ほとんどの PyLong_As* API は (return type)-1 を返しますが、これは数値と見分けが付きません。
見分けを付けるためには PyErr_Occurred() を使ってください。
-
type
PyLongObject¶ - Part of the Limited API (as an opaque struct).
この
PyObjectのサブタイプは整数型を表現します。
-
PyTypeObject
PyLong_Type¶ - Part of the Stable ABI.
この
PyTypeObjectのインスタンスは Python 整数型を表現します。これは Python レイヤにおけるintと同じオブジェクトです。
-
int
PyLong_Check(PyObject *p)¶ 引数が
PyLongObjectかPyLongObjectのサブタイプであるときに真を返します。この関数は常に成功します。
-
int
PyLong_CheckExact(PyObject *p)¶ 引数が
PyLongObjectであるがPyLongObjectのサブタイプでないときに真を返します。この関数は常に成功します。
-
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 を基数として文字列を解釈します。 pend がNULLでない場合は、 *pend は str 中で数が表現されている部分以降の先頭文字のアドレスを指しています。 base が0の場合は、 str は 整数リテラル の定義を使って解釈されます; この場合では、先頭に 0 がある 0 でない十進数はValueErrorを送出します。 base が0でなければ、 base は2以上36以下の数でなければなりません。 先頭の空白、基数の指定の後や数字の間にある単一のアンダースコアは無視されます。 数字が全くない場合、ValueErrorが送出されます。参考
Python methods
int.to_bytes()andint.from_bytes()to convert aPyLongObjectto/from an array of bytes in base256. You can call those from C usingPyObject_CallMethod().
-
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.
obj が表す、Cの
long表現を返します。もし obj がPyLongObjectのインスタンスでなければ、まず、その__index__()メソッドを (もしあれば) 呼び出して、オブジェクトを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.
obj が表す、Cの
long表現を返します。もし obj がPyLongObjectのインスタンスでなければ、まず、その__index__()メソッドを (もしあれば) 呼び出して、オブジェクトをPyLongObjectに変換します。もし、 obj の値が
LONG_MAXより大きいか、LONG_MINより小さければ、 *overflow は、それぞれ1か-1に設定され、-1を返します; さもなければ *overflow は0に設定されます。もし、ほかの例外が発生した場合は *overflow が0に設定され-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.
obj が表す、Cの
long long表現を返します。もし obj がPyLongObjectのインスタンスでなければ、まず、その__index__()メソッドを (もしあれば) 呼び出して、オブジェクトを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.
obj が表す、Cの
long long表現を返します。もし obj がPyLongObjectのインスタンスでなければ、まず、その__index__()メソッドを (もしあれば) 呼び出して、オブジェクトをPyLongObjectに変換します。もし、 obj の値が
LLONG_MAXより大きいか、LLONG_MINより小さければ、 *overflow は、それぞれ1か-1に設定され、-1を返します; さもなければ *overflow は0に設定されます。もし、ほかの例外が発生した場合は *overflow が0に設定され-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を返します。 pylong はPyLongObjectのインスタンスでなければなりません。もし pylong の値が
Py_ssize_tの範囲外であれば、OverflowErrorを送出します。エラーが起きたときに
-1を返します。 見分けを付けるためにはPyErr_Occurred()を使ってください。
-
unsigned long
PyLong_AsUnsignedLong(PyObject *pylong)¶ - Part of the Stable ABI.
pylong を表す C の
unsigned longを返します。 pylong はPyLongObjectのインスタンスでなければなりません。もし 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を返します。 pylong はPyLongObjectのインスタンスでなければなりません。もし 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を返します。 pylong はPyLongObjectのインスタンスでなければなりません。もし 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.
obj が表す、C の
unsigned long表現を返します。もし obj がPyLongObjectのインスタンスでなければ、まず、その__index__()メソッドを (もしあれば) 呼び出して、オブジェクトを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.
obj が表す、C の
unsigned long long表現を返します。もし obj がPyLongObjectのインスタンスでなければ、まず、その__index__()メソッドを (もしあれば) 呼び出して、オブジェクトを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を返します。 pylong はPyLongObjectのインスタンスでなければなりません。もし 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()を使ってください。