operator モジュールは、Python 固有の各演算子に対応している
C 言語で実装された関数セットを提供します。例えば、
operator.add(x, y)
は式 x+y
と等価です。関数名は
特殊なクラスメソッドとして扱われます; 便宜上、先頭と末尾の "__"
を取り除いたものも提供されています。
これらの関数はそれぞれ、オブジェクトの比較、論理演算、数学演算、
配列操作、および抽象型テストに分類されます。
オブジェクト比較関数は全てのオブジェクトで有効で、関数の名前は
サポートする大小比較演算子からとられています:
-
-
これらは a および b の大小比較を行います。
特に、
lt(a, b)
は a < b
、
le(a, b)
は a <= b
、
eq(a, b)
は a == b
、
ne(a, b)
は a != b
、
gt(a, b)
は a > b
、
そして
ge(a, b)
は a >= b
と等価です。
組み込み関数 cmp() と違って、これらの関数はどのような
値を返してもよく、ブール代数値として解釈できてもできなくても
かまいません。大小比較の詳細については
Python リファレンスマニュアル
を参照してください。
バージョン2.2 以降で新規追加された 仕様です。
論理演算もまた全てのオブジェクトに対して適用することができ、
真値テスト、同一性テストおよびブール演算をサポートします:
-
-
not o の結果を返します。(オブジェクトのインスタンス
には __not__() メソッドは適用されないので注意してください;
この操作を定義しているのはインタプリタコアだけです。結果は
__nonzero__() および __len__() メソッドによって
影響されます。)
-
o が真の場合
True
を返し、そうでない場合 False
を返します。この関数はboolのコンストラクタ呼び出しと同等です。
-
a is b
を返します。オブジェクトの同一性をテストします。
-
a is not b
を返します。オブジェクトの同一性をテストします。
演算子で最も多いのは数学演算およびビット単位の演算です:
-
- o の絶対値を返します。
-
- 数値 a および b について a
+
b を
返します。
-
- a と b の論理積を返します。
-
__future__.division
が有効でない場合には a /
b
を返します。``古い(classic)'' 除算としても知られています。
-
- a
//
b を返します。
バージョン2.2 以降で新規追加された 仕様です。
-
- o のビット単位反転を返します。
~
o と
同じです。Python 2.0 では名前 invert() および
__invert__() が追加されました。
-
- a の b ビット左シフトを返します。
-
- a
%
b を返します。
-
- 数値 a および b について a
*
b
を返します。
-
- o の符号反転を返します。
-
- a と b の論理和を返します。
-
- o の符号非反転を返します。
-
- 数値 a および b について a
**
b
を返します。
バージョン2.3 以降で新規追加された 仕様です。
-
- a の b ビット右シフトを返します。
-
- a
-
b を返します。
-
__future__.division
が有効な場合 a /
b
を返します。除算としても知られています。
バージョン2.2 以降で新規追加された 仕様です。
-
- a および b の排他的論理和を返します
配列を扱う演算子には以下のようなものがあります:
-
- 配列 a および b について a
+
b
を返します。
-
- b
in
a を調べた結果を返します。
演算子が反転しているので注意してください。関数名
__contains__() は Python 2.0 で追加されました。
-
a の中に b が出現する回数を返します。
-
- a でインデクスが b の要素を削除します。
-
- a でインデクスが b から c
-1
のスライス要素を
削除します。
-
- a でインデクスが b の要素を削除します。
Return the value of a at index b.
-
- a でインデクスが b から c
-1
のスライス要素を
返します。
-
a で最初に b が出現する場所のインデクスを返します。
-
- 配列 a と整数 b について a
*
b
を返します。
-
リリース 2.0 以降で撤廃された仕様です。
contains() を使ってください。
contains() の別名です。
-
- a でインデクスが b の要素の値を c に設定します。
-
__setslice__( |
a, b, c, v) |
- a でインデクスが b から c
-1
のスライス要素の
値を配列 v に設定します。
operator モジュールでは、オブジェクトの型を調べるための
述語演算子も定義しています。注意:
これらの関数が返す結果について
誤って理解しないよう注意してください; インスタンスオブジェクトに
対して常に信頼できる値を返すのは isCallable()
だけです。例えば以下のようになります:
>>> class C:
... pass
...
>>> import operator
>>> o = C()
>>> operator.isMappingType(o)
True
-
リリース 2.0 以降で撤廃された仕様です。
callable() を使ってください。
オブジェクト o を関数のように呼び出すことができる場合真を
返し、それ以外の場合 false を返します。関数、バインドおよび非バインド
メソッド、クラスオブジェクト、および __call__() メソッド
をサポートするインスタンスオブジェクトは真を返します。
-
オブジェクト o がマップ型インタフェースをサポートする場合に
真を返します。辞書および全てのインスタンスオブジェクトに対しては、
この値は真になります。警告:
インタフェース自体が誤った定義に
なっているため、あるインスタンスが完全なマップ型プロトコルを備えて
いるかを調べる信頼性のある方法は存在しません。このため、この関数
によるテストはさほど便利ではありません。
-
オブジェクト o が数値を表現している場合に真を返します。
C で実装された全ての数値型、およびそれらのインスタンスオブジェクト
全て対して、この値は真になります。警告:
インタフェース自体が
誤った定義になっているため、あるインスタンスが完全な数値型の
インタフェースをサポートしているかを調べる信頼性のある方法は存在
しません。このため、この関数によるテストはさほど便利ではありません。
-
o が配列プロトコルをサポートする場合に真を返します。
配列メソッドを C で定義している全てのオブジェクトに対して、この値
は真になります。
警告:
インタフェース自体が
誤った定義になっているため、あるインスタンスが完全な配列型の
インタフェースをサポートしているかを調べる信頼性のある方法は存在
しません。このため、この関数によるテストはさほど便利ではありません。
例: 0
から 256
までの序数を文字に対応付ける
辞書を構築します。
>>> import operator
>>> d = {}
>>> keys = range(256)
>>> vals = map(chr, keys)
>>> map(operator.setitem, [d]*len(keys), keys, vals)
Release 2.3.5, documentation updated on 平成17年10月12日.
ご意見やご指摘をお寄せになりたい方は、 このドキュメントについて... をご覧ください。