整数型オブジェクト (integer object)¶
すべての整数は任意の長さをもつ “long” 整数として実装されます。
-
PyTypeObject
PyLong_Type
¶ この
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.
v から新たな
PyLongObject
オブジェクトを生成して返します。失敗のときには NULL を返します。現在の実装では、
-5
から256
までの全ての整数に対する整数オブジェクトの配列を保持するようにしており、この範囲の数を生成すると、実際には既存のオブジェクトに対する参照が返るようになっています。従って、1
の値を変えることすら可能です。変えてしまった場合の Python の挙動は未定義です :-)
-
PyObject*
PyLong_FromUnsignedLong
(unsigned long v)¶ - Return value: New reference.
Cの
unsigned long
から新たなPyLongObject
オブジェクトを生成して返します。失敗した際には NULL を返します。
-
PyObject*
PyLong_FromSsize_t
(Py_ssize_t v)¶ C の
Py_ssize_t
型から新たなPyLongObject
オブジェクトを生成して返します。 失敗のときには NULL を返します。
-
PyObject*
PyLong_FromSize_t
(size_t v)¶ C の
size_t
型から新たなPyLongObject
オブジェクトを生成して返します。 失敗のときには NULL を返します。
-
PyObject*
PyLong_FromLongLong
(PY_LONG_LONG v)¶ - Return value: New reference.
C の
long long
型から新たなPyLongObject
オブジェクトを生成して返します。失敗のときには NULL を返します。
-
PyObject*
PyLong_FromUnsignedLongLong
(unsigned PY_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.
Return a new
PyLongObject
based on the string value in str, which is interpreted according to the radix in base. If pend is non-NULL, *pend will point to the first character in str which follows the representation of the number. If base is0
, str is interpreted using the 整数リテラル definition; in this case, leading zeros in a non-zero decimal number raises aValueError
. If base is not0
, it must be between2
and36
, inclusive. Leading spaces and single underscores after a base specifier and between digits are ignored. If there are no digits,ValueError
will be raised.
-
PyObject*
PyLong_FromUnicode
(Py_UNICODE *u, Py_ssize_t length, int base)¶ - Return value: New reference.
Unicode 数値列を Python 整数値に変換します。Unicode 文字列はまず
PyUnicode_EncodeDecimal()
を用いてバイト文字列にエンコードされ、次にPyLong_FromString()
を用いて変換されます。バージョン 3.3 で非推奨、バージョン 4.0 で削除予定: 古いスタイルの Py_UNICODE API の一部です; PyLong_FromUnicodeObject() を使用するように移行してください。
-
PyObject*
PyLong_FromUnicodeObject
(PyObject *u, int base)¶ u 文字列中の Unicode 数値列を Python 整数値に変換します。Unicode 文字列はまず
PyUnicode_EncodeDecimal()
を用いてバイト文字列にエンコードされ、次にPyLong_FromString()
を用いて変換されます。バージョン 3.3 で追加.
-
PyObject*
PyLong_FromVoidPtr
(void *p)¶ - Return value: New reference.
ポインタ p から Python 整数値を生成します。ポインタの値は
PyLong_AsVoidPtr()
を適用した結果から取得されます。
-
long
PyLong_AsLong
(PyObject *obj)¶ obj が表す、Cの
long
表現を返します。もし obj がPyLongObject
のインスタンスでなければ、まず、その__int__()
メソッドを (もしあれば) 呼び出して、オブジェクトをPyLongObject
に変換します。もし obj の値が
long
の範囲外であれば、OverflowError
を送出します。
-
long
PyLong_AsLongAndOverflow
(PyObject *obj, int *overflow)¶ obj が表す、Cの
long
表現を返します。もし obj がPyLongObject
のインスタンスでなければ、まず、その__int__()
メソッドを (もしあれば) 呼び出して、オブジェクトをPyLongObject
に変換します。もし、 obj の値が
LONG_MAX
より大きいか、LONG_MIN
より小さければ、 *overflow は、それぞれ1
か-1
に設定され、-1
を返します; さもなければ *overflow は0
に設定されます。もし、ほかの例外が発生した場合は *overflow が0
に設定され-1
を返します。
-
PY_LONG_LONG
PyLong_AsLongLong
(PyObject *obj)¶ obj が表す、Cの
long long
表現を返します。もし obj がPyLongObject
のインスタンスでなければ、まず、その__int__()
メソッドを (もしあれば) 呼び出して、オブジェクトをPyLongObject
に変換します。もし obj の値が
long
の範囲外であれば、OverflowError
を送出します。
-
PY_LONG_LONG
PyLong_AsLongLongAndOverflow
(PyObject *obj, int *overflow)¶ obj が表す、Cの
long long
表現を返します。もし obj がPyLongObject
のインスタンスでなければ、まず、その__int__()
メソッドを (もしあれば) 呼び出して、オブジェクトをPyLongObject
に変換します。もし、 obj の値が
PY_LLONG_MAX
より大きいか、PY_LLONG_MIN
より小さければ、 *overflow は、それぞれ1
か-1
に設定され、-1
を返します; さもなければ *overflow は0
に設定されます。もし、ほかの例外が発生した場合は *overflow が0
に設定され-1
を返します。バージョン 3.2 で追加.
-
Py_ssize_t
PyLong_AsSsize_t
(PyObject *pylong)¶ pylong を表す C の
Py_ssize_t
を返します。 pylong はPyLongObject
のインスタンスでなければなりません。もし pylong の値が
Py_ssize_t
の範囲外であれば、OverflowError
を送出します。
-
unsigned long
PyLong_AsUnsignedLong
(PyObject *pylong)¶ pylong を表す C の
unsigned long
を返します。 pylong はPyLongObject
のインスタンスでなければなりません。もし pylong の値が
unsigned long
の範囲外であれば、OverflowError
を送出します。
-
size_t
PyLong_AsSize_t
(PyObject *pylong)¶ pylong を表す C の
size_t
を返します。 pylong はPyLongObject
のインスタンスでなければなりません。もし pylong の値が
size_t
の範囲外であれば、OverflowError
を送出します。
-
unsigned PY_LONG_LONG
PyLong_AsUnsignedLongLong
(PyObject *pylong)¶ pylong を表す C の
unsigned PY_LONG_LONG
を返します。 pylong はPyLongObject
のインスタンスでなければなりません。もし pylong の値が
unsigned PY_LONG_LONG
の範囲外であれば、OverflowError
を送出します。バージョン 3.1 で変更: 負 pylong を指定した際に
TypeError
ではなく、OverflowError
を送出するようになりました。
-
unsigned long
PyLong_AsUnsignedLongMask
(PyObject *obj)¶ obj が表す、C の
unsigned long
表現を返します。もし obj がPyLongObject
のインスタンスでなければ、まず、その__int__()
メソッドを (もしあれば) 呼び出して、オブジェクトをPyLongObject
に変換します。obj の値が
unsigned long
の範囲から外れていた場合は、ULONG_MAX + 1
を法とした剰余を返します。
-
unsigned PY_LONG_LONG
PyLong_AsUnsignedLongLongMask
(PyObject *obj)¶ obj が表す、C の
unsigned long long
表現を返します。もし obj がPyLongObject
のインスタンスでなければ、まず、その__int__()
メソッドを (もしあれば) 呼び出して、オブジェクトをPyLongObject
に変換します。obj の値が
unsigned long long
の範囲から外れていた場合は、PY_ULLONG_MAX + 1
を法とした剰余を返します。
-
double
PyLong_AsDouble
(PyObject *pylong)¶ pylong を表す C の
double
を返します。 pylong はPyLongObject
のインスタンスでなければなりません。もし pylong の値が
double
の範囲外であれば、OverflowError
を送出します。
-
void*
PyLong_AsVoidPtr
(PyObject *pylong)¶ Python の整数型を指す pylong を、 C の
void
ポインタに変換します。 pylong を変換できなければ、OverflowError
を送出します。この関数はPyLong_FromVoidPtr()
で値を生成するときに使うようなvoid
ポインタ型を生成できるだけです。