整数オブジェクト—Pythonドキュメント

提供:Dev Guides
< PythonPython/docs/3.7/c-api/long
移動先:案内検索

整数オブジェクト

すべての整数は、任意のサイズの「長い」整数オブジェクトとして実装されます。

エラーの場合、ほとんどのPyLong_As* APIは(return type)-1を返しますが、これは数値と区別できません。 PyErr_Occurred()を使用して曖昧さを解消します。

type PyLongObject
PyObject のこのサブタイプは、Python整数オブジェクトを表します。
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)

失敗した場合は、 v またはNULLから新しい PyLongObject オブジェクトを返します。

現在の実装では、-5256の間のすべての整数の整数オブジェクトの配列が保持されます。その範囲で整数を作成すると、実際には既存のオブジェクトへの参照が返されます。 したがって、1の値を変更できるはずです。 この場合のPythonの動作は未定義だと思います。 :-)

PyObject *PyLong_FromUnsignedLong(unsigned long v)
失敗した場合は、C unsigned longまたはNULLから新しい PyLongObject オブジェクトを返します。
PyObject *PyLong_FromSsize_t(Py_ssize_t v)
失敗した場合は、C Py_ssize_tまたはNULLから新しい PyLongObject オブジェクトを返します。
PyObject *PyLong_FromSize_t(size_t v)
失敗した場合は、C size_tまたはNULLから新しい PyLongObject オブジェクトを返します。
PyObject *PyLong_FromLongLong(long long v)
失敗した場合は、C long longまたはNULLから新しい PyLongObject オブジェクトを返します。
PyObject *PyLong_FromUnsignedLongLong(unsigned long long v)
失敗した場合は、C unsigned long longまたはNULLから新しい PyLongObject オブジェクトを返します。
PyObject *PyLong_FromDouble(double v)
v の整数部分から新しい PyLongObject オブジェクトを返すか、失敗した場合はNULLを返します。
PyObject *PyLong_FromString(const char *str, char **pend, int base)
str の文字列値に基づいて、新しい PyLongObject を返します。これは、 base の基数に従って解釈されます。 pendNULL以外の場合、 * pend は、番号の表現に続く str の最初の文字を指します。 base0の場合、 str整数リテラル定義を使用して解釈されます。 この場合、ゼロ以外の10進数の先行ゼロは、 ValueError を発生させます。 base0でない場合は、236の間にある必要があります。 基本指定子の後および数字の間の先頭のスペースと単一の下線は無視されます。 数字がない場合、 ValueError が発生します。
PyObject *PyLong_FromUnicode(Py_UNICODE *u, Py_ssize_t length, int base)
Unicode桁のシーケンスをPython整数値に変換します。 Unicode文字列は、最初にPyUnicode_EncodeDecimal()を使用してバイト文字列にエンコードされ、次に PyLong_FromString()を使用して変換されます。
PyObject *PyLong_FromUnicodeObject(PyObject *u, int base)

文字列 u 内のUnicode桁のシーケンスをPython整数値に変換します。 Unicode文字列は、最初にPyUnicode_EncodeDecimal()を使用してバイト文字列にエンコードされ、次に PyLong_FromString()を使用して変換されます。

バージョン3.3の新機能。

PyObject *PyLong_FromVoidPtr(void *p)
ポインター p からPython整数を作成します。 ポインタ値は、 PyLong_AsVoidPtr()を使用して結果の値から取得できます。
long PyLong_AsLong(PyObject *obj)

obj のC long表現を返します。 objPyLongObject のインスタンスでない場合は、最初にその__int__()メソッド(存在する場合)を呼び出して、 PyLongObject に変換します。

obj の値がlongの範囲外の場合は、 OverflowError を発生させます。

エラー時に-1を返します。 PyErr_Occurred()を使用して曖昧さを解消します。

long PyLong_AsLongAndOverflow(PyObject *obj, int *overflow)

obj のC long表現を返します。 objPyLongObject のインスタンスでない場合は、最初にその__int__()メソッド(存在する場合)を呼び出して、 PyLongObject に変換します。

obj の値がLONG_MAXより大きいか、LONG_MINより小さい場合は、 * overlay1または-1、および-1を返します。 それ以外の場合は、 * overlay0に設定します。 その他の例外が発生した場合は、 * overlay0に設定し、通常どおり-1を返します。

エラー時に-1を返します。 PyErr_Occurred()を使用して曖昧さを解消します。

long long PyLong_AsLongLong(PyObject *obj)

obj のC long long表現を返します。 objPyLongObject のインスタンスでない場合は、最初にその__int__()メソッド(存在する場合)を呼び出して、 PyLongObject に変換します。

obj の値がlong longの範囲外の場合は、 OverflowError を発生させます。

エラー時に-1を返します。 PyErr_Occurred()を使用して曖昧さを解消します。

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

obj のC long long表現を返します。 objPyLongObject のインスタンスでない場合は、最初にその__int__()メソッド(存在する場合)を呼び出して、 PyLongObject に変換します。

obj の値がPY_LLONG_MAXより大きいか、PY_LLONG_MINより小さい場合は、 * overlay1または-1、および-1を返します。 それ以外の場合は、 * overlay0に設定します。 その他の例外が発生した場合は、 * overlay0に設定し、通常どおり-1を返します。

エラー時に-1を返します。 PyErr_Occurred()を使用して曖昧さを解消します。

バージョン3.2の新機能。

Py_ssize_t PyLong_AsSsize_t(PyObject *pylong)

pylong のC Py_ssize_t表現を返します。 pylong は、 PyLongObject のインスタンスである必要があります。

pylong の値がPy_ssize_tの範囲外の場合は、 OverflowError を発生させます。

エラー時に-1を返します。 PyErr_Occurred()を使用して曖昧さを解消します。

unsigned long PyLong_AsUnsignedLong(PyObject *pylong)

pylong のC unsigned long表現を返します。 pylong は、 PyLongObject のインスタンスである必要があります。

pylong の値がunsigned longの範囲外の場合は、 OverflowError を発生させます。

エラー時に(unsigned long)-1を返します。 PyErr_Occurred()を使用して曖昧さを解消します。

size_t PyLong_AsSize_t(PyObject *pylong)

pylong のC size_t表現を返します。 pylong は、 PyLongObject のインスタンスである必要があります。

pylong の値がsize_tの範囲外の場合は、 OverflowError を発生させます。

エラー時に(size_t)-1を返します。 PyErr_Occurred()を使用して曖昧さを解消します。

unsigned long long PyLong_AsUnsignedLongLong(PyObject *pylong)

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)

obj のC unsigned long表現を返します。 objPyLongObject のインスタンスでない場合は、最初にその__int__()メソッド(存在する場合)を呼び出して、 PyLongObject に変換します。

obj の値がunsigned longの範囲外の場合は、ULONG_MAX + 1を法としてその値の減少を返します。

エラー時に(unsigned long)-1を返します。 PyErr_Occurred()を使用して曖昧さを解消します。

unsigned long long PyLong_AsUnsignedLongLongMask(PyObject *obj)

obj のC unsigned long long表現を返します。 objPyLongObject のインスタンスでない場合は、最初にその__int__()メソッド(存在する場合)を呼び出して、 PyLongObject に変換します。

obj の値がunsigned long longの範囲外の場合は、PY_ULLONG_MAX + 1を法としてその値の減少を返します。

エラー時に(unsigned long long)-1を返します。 PyErr_Occurred()を使用して曖昧さを解消します。

double PyLong_AsDouble(PyObject *pylong)

pylong のC double表現を返します。 pylong は、 PyLongObject のインスタンスである必要があります。

pylong の値がdoubleの範囲外の場合は、 OverflowError を発生させます。

エラー時に-1.0を返します。 PyErr_Occurred()を使用して曖昧さを解消します。

void *PyLong_AsVoidPtr(PyObject *pylong)

Python整数 pylong をC voidポインターに変換します。 pylong を変換できない場合、 OverflowError が発生します。 これは、 PyLong_FromVoidPtr()で作成された値に対して使用可能なvoidポインターを生成することのみが保証されています。

エラー時にNULLを返します。 PyErr_Occurred()を使用して曖昧さを解消します。