番号プロトコル—Pythonドキュメント

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

番号プロトコル

int PyNumber_Check(PyObject *o)
オブジェクト o が数値プロトコルを提供する場合は1を返し、それ以外の場合はfalseを返します。 この関数は常に成功します。
PyObject *PyNumber_Add(PyObject *o1, PyObject *o2)
o1o2 を加算した結果、または失敗した場合は NULL を加算した結果を返します。 これは、Python式o1 + o2と同等です。
PyObject *PyNumber_Subtract(PyObject *o1, PyObject *o2)
o1 から o2 を引いた結果、または失敗した場合は NULL を返します。 これは、Python式o1 - o2と同等です。
PyObject *PyNumber_Multiply(PyObject *o1, PyObject *o2)
o1o2 を乗算した結果、または失敗した場合は NULL を返します。 これは、Python式o1 * o2と同等です。
PyObject *PyNumber_Divide(PyObject *o1, PyObject *o2)
o1o2 で除算した結果、または失敗した場合は NULL を返します。 これは、Python式o1 / o2と同等です。
PyObject *PyNumber_FloorDivide(PyObject *o1, PyObject *o2)

o1 のフロアを o2 で割った値、または失敗した場合は NULL を返します。 これは、整数の「古典的な」除算に相当します。

バージョン2.2の新機能。

PyObject *PyNumber_TrueDivide(PyObject *o1, PyObject *o2)

o1o2 で割った値、または失敗した場合は NULL の妥当な近似値を返します。 2進浮動小数点数は概算であるため、戻り値は「概算」です。 基数2ですべての実数を表すことはできません。 この関数は、2つの整数が渡されると、浮動小数点値を返すことができます。

バージョン2.2の新機能。

PyObject *PyNumber_Remainder(PyObject *o1, PyObject *o2)
o1o2 で除算した余り、または失敗した場合は NULL を返します。 これは、Python式o1 % o2と同等です。
PyObject *PyNumber_Divmod(PyObject *o1, PyObject *o2)
組み込み関数 divmod()を参照してください。 失敗すると NULL を返します。 これは、Python式divmod(o1, o2)と同等です。
PyObject *PyNumber_Power(PyObject *o1, PyObject *o2, PyObject *o3)
組み込み関数 pow()を参照してください。 失敗すると NULL を返します。 これは、Python式pow(o1, o2, o3)と同等です。ここで、 o3 はオプションです。 o3 を無視する場合は、代わりに Py_None を渡します( o3NULL を渡すと、不正なメモリアクセスが発生します)。
PyObject *PyNumber_Negative(PyObject *o)
成功した場合は o の否定を返し、失敗した場合は NULL の否定を返します。 これは、Python式-oと同等です。
PyObject *PyNumber_Positive(PyObject *o)
成功した場合は o を返し、失敗した場合は NULL を返します。 これは、Python式+oと同等です。
PyObject *PyNumber_Absolute(PyObject *o)
失敗した場合は、 o または NULL の絶対値を返します。 これは、Python式abs(o)と同等です。
PyObject *PyNumber_Invert(PyObject *o)
成功した場合は o のビット単位の否定を返し、失敗した場合は NULL を返します。 これは、Python式~oと同等です。
PyObject *PyNumber_Lshift(PyObject *o1, PyObject *o2)
成功した場合は o1o2 、失敗した場合は NULL だけ左シフトした結果を返します。 これは、Python式o1 << o2と同等です。
PyObject *PyNumber_Rshift(PyObject *o1, PyObject *o2)
成功した場合は o1o2 で右シフトした結果を返し、失敗した場合は NULL を返します。 これは、Python式o1 >> o2と同等です。
PyObject *PyNumber_And(PyObject *o1, PyObject *o2)
成功した場合は o1o2 の「ビット単位のand」を返し、失敗した場合は NULL を返します。 これは、Python式o1 & o2と同等です。
PyObject *PyNumber_Xor(PyObject *o1, PyObject *o2)
成功した場合は o2 による o1 の「ビット単位の排他的論理和」を返します。失敗した場合は NULL を返します。 これは、Python式o1 ^ o2と同等です。
PyObject *PyNumber_Or(PyObject *o1, PyObject *o2)
成功した場合は o1o2 の「ビット単位のor」を返し、失敗した場合は NULL を返します。 これは、Python式o1 | o2と同等です。
PyObject *PyNumber_InPlaceAdd(PyObject *o1, PyObject *o2)
o1o2 を加算した結果、または失敗した場合は NULL を加算した結果を返します。 o1 がサポートしている場合、操作はインプレースで実行されます。 これは、Pythonステートメントo1 += o2と同等です。
PyObject *PyNumber_InPlaceSubtract(PyObject *o1, PyObject *o2)
o1 から o2 を引いた結果、または失敗した場合は NULL を返します。 o1 がサポートしている場合、操作はインプレースで実行されます。 これは、Pythonステートメントo1 -= o2と同等です。
PyObject *PyNumber_InPlaceMultiply(PyObject *o1, PyObject *o2)
o1o2 を乗算した結果、または失敗した場合は NULL を返します。 o1 がサポートしている場合、操作はインプレースで実行されます。 これは、Pythonステートメントo1 *= o2と同等です。
PyObject *PyNumber_InPlaceDivide(PyObject *o1, PyObject *o2)
o1o2 で除算した結果、または失敗した場合は NULL を返します。 o1 がサポートしている場合、操作はインプレースで実行されます。 これは、Pythonステートメントo1 /= o2と同等です。
PyObject *PyNumber_InPlaceFloorDivide(PyObject *o1, PyObject *o2)

o1o2 で除算する、または失敗した場合は NULL を除算する数学的フロアを返します。 o1 がサポートしている場合、操作はインプレースで実行されます。 これは、Pythonステートメントo1 //= o2と同等です。

バージョン2.2の新機能。

PyObject *PyNumber_InPlaceTrueDivide(PyObject *o1, PyObject *o2)

o1o2 で割った値、または失敗した場合は NULL の妥当な近似値を返します。 2進浮動小数点数は概算であるため、戻り値は「概算」です。 基数2ですべての実数を表すことはできません。 この関数は、2つの整数が渡されると、浮動小数点値を返すことができます。 o1 がサポートしている場合、操作はインプレースで実行されます。

バージョン2.2の新機能。

PyObject *PyNumber_InPlaceRemainder(PyObject *o1, PyObject *o2)
o1o2 で除算した余り、または失敗した場合は NULL を返します。 o1 がサポートしている場合、操作はインプレースで実行されます。 これは、Pythonステートメントo1 %= o2と同等です。
PyObject *PyNumber_InPlacePower(PyObject *o1, PyObject *o2, PyObject *o3)
組み込み関数 pow()を参照してください。 失敗すると NULL を返します。 o1 がサポートしている場合、操作はインプレースで実行されます。 これは、o3が Py_None の場合のPythonステートメントo1 **= o2と同等であり、それ以外の場合はpow(o1, o2, o3)のインプレースバリアントです。 o3 を無視する場合は、代わりに Py_None を渡します( o3NULL を渡すと、不正なメモリアクセスが発生します)。
PyObject *PyNumber_InPlaceLshift(PyObject *o1, PyObject *o2)
成功した場合は o1o2 、失敗した場合は NULL だけ左シフトした結果を返します。 o1 がサポートしている場合、操作はインプレースで実行されます。 これは、Pythonステートメントo1 <<= o2と同等です。
PyObject *PyNumber_InPlaceRshift(PyObject *o1, PyObject *o2)
成功した場合は o1o2 で右シフトした結果を返し、失敗した場合は NULL を返します。 o1 がサポートしている場合、操作はインプレースで実行されます。 これは、Pythonステートメントo1 >>= o2と同等です。
PyObject *PyNumber_InPlaceAnd(PyObject *o1, PyObject *o2)
成功した場合は o1o2 の「ビット単位のand」を返し、失敗した場合は NULL を返します。 o1 がサポートしている場合、操作はインプレースで実行されます。 これは、Pythonステートメントo1 &= o2と同等です。
PyObject *PyNumber_InPlaceXor(PyObject *o1, PyObject *o2)
成功した場合は o2 による o1 の「ビット単位の排他的論理和」を返します。失敗した場合は NULL を返します。 o1 がサポートしている場合、操作はインプレースで実行されます。 これは、Pythonステートメントo1 ^= o2と同等です。
PyObject *PyNumber_InPlaceOr(PyObject *o1, PyObject *o2)
成功した場合は o1o2 の「ビット単位のor」を返し、失敗した場合は NULL を返します。 o1 がサポートしている場合、操作はインプレースで実行されます。 これは、Pythonステートメントo1 |= o2と同等です。
int PyNumber_Coerce(PyObject **p1, PyObject **p2)
この関数は、タイプPyObject*の2つの変数のアドレスを取ります。 *p1*p2が指すオブジェクトのタイプが同じである場合は、参照カウントを増やして0を返します(成功)。 オブジェクトを共通の数値型に変換できる場合は、*p1*p2を変換された値(「新しい」参照カウント)に置き換えて、0を返します。 変換が不可能な場合、またはその他のエラーが発生した場合は、-1(失敗)を返し、参照カウントをインクリメントしないでください。 PyNumber_Coerce(&o1, &o2)の呼び出しは、Pythonステートメントo1, o2 = coerce(o1, o2)と同等です。
int PyNumber_CoerceEx(PyObject **p1, PyObject **p2)
この関数は PyNumber_Coerce()に似ていますが、変換が不可能でエラーが発生しない場合に1を返す点が異なります。 この場合、参照カウントはまだ増加していません。
PyObject *PyNumber_Int(PyObject *o)
成功した場合は整数オブジェクトに変換された o を返し、失敗した場合は NULL を返します。 引数が整数の範囲外の場合は、代わりに長いオブジェクトが返されます。 これは、Python式int(o)と同等です。
PyObject *PyNumber_Long(PyObject *o)
成功した場合は長整数オブジェクトに変換された o を返し、失敗した場合は NULL を返します。 これは、Python式long(o)と同等です。
PyObject *PyNumber_Float(PyObject *o)
成功した場合はfloatオブジェクトに変換された o を返し、失敗した場合は NULL を返します。 これは、Python式float(o)と同等です。
PyObject *PyNumber_Index(PyObject *o)

成功した場合はPythonintまたはlongに変換された o を返し、失敗した場合はTypeError例外が発生した NULL を返します。

バージョン2.5の新機能。

PyObject *PyNumber_ToBase(PyObject *n, int base)

base に変換された整数 n を、'0b''0o'、または'0x'のベースマーカーを持つ文字列として返します。 。 base が2、8、10、または16でない場合、形式は'x#num'です。ここで、xはベースです。 n がintオブジェクトでない場合は、最初に PyNumber_Index()で変換されます。

バージョン2.6の新機能。

Py_ssize_t PyNumber_AsSsize_t(PyObject *o, PyObject *exc)

o が整数として解釈できる場合、Py_ssize_t値に変換された o を返します。 o をPythonintまたはlongに変換できるが、Py_ssize_t値に変換しようとすると、OverflowErrorが発生する場合、 exc 引数は次のタイプです。発生する例外(通常はIndexErrorまたはOverflowError)。 excNULL の場合、例外はクリアされ、値は負の整数の場合は PY_SSIZE_T_MIN に、正の整数の場合は PY_SSIZE_T_MAX にクリップされます。整数。

バージョン2.5の新機能。

int PyIndex_Check(PyObject *o)

o がインデックス整数(tp_as_number構造体のnb_indexスロットが入力されている)の場合は1を返し、それ以外の場合は0を返します。

バージョン2.5の新機能。