Python3 operator モジュール

Python2.x バージョンでは、cmp()関数を使用して、2つのリスト、数値、文字列などの大小関係を比較します。

Python 3.X バージョンでは、cmp()関数はありません。比較機能を実装する必要がある場合は、導入が必要です。operatorモジュールは、任意のオブジェクトに適しており、含まれるメソッドは次のとおりです。

operator モジュールに含まれるメソッド

operator.lt(a, b)
operator.le(a, b)
operator.eq(a, b)
operator.ne(a, b)
operator.ge(a, b)
operator.gt(a, b)
operator.__lt__(a, b)
operator.__le__(a, b)
operator.__eq__(a, b)
operator.__ne__(a, b)
operator.__ge__(a, b)
operator.__gt__(a, b)

operator.lt(a, b)とa < b同じ、operator.le(a, b)とa <= b同じ、operator.eq(a, b)とa == b同じ、operator.ne(a, b)とa != b同じ、operator.gt(a, b)とa > b同じ、operator.ge(a, b)とa >= b同じ。

例

# operator モジュールをインポート
import operator
 
# 数値
x = 10
y = 20

print("x:",x, ", y:",y)
print("operator.lt(x,y): ", operator.lt(x,y))
print("operator.gt(y,x): ", operator.gt(y,x))
print("operator.eq(x,x): ", operator.eq(x,x))
print("operator.ne(y,y): ", operator.ne(y,y))
print("operator.le(x,y): ", operator.le(x,y))
print("operator.ge(y,x): ", operator.ge(y,x))
print()

# 文字列
x = "Google"
y = "サンプル"

print("x:",x, ", y:",y)
print("operator.lt(x,y): ", operator.lt(x,y))
print("operator.gt(y,x): ", operator.gt(y,x))
print("operator.eq(x,x): ", operator.eq(x,x))
print("operator.ne(y,y): ", operator.ne(y,y))
print("operator.le(x,y): ", operator.le(x,y))
print("operator.ge(y,x): ", operator.ge(y,x))
print()

# 戻り値を確認
print("type((operator.lt(x,y)): ", type(operator.lt(x,y)))

上記のコードの出力結果は次のとおりです。

x: 10 , y: 20
operator.lt(x,y):  True
operator.gt(y,x):  True
operator.eq(x,x):  True
operator.ne(y,y):  False
operator.le(x,y):  True
operator.ge(y,x):  True

x: Google , y: サンプル
operator.lt(x,y):  True
operator.gt(y,x):  True
operator.eq(x,x):  True
operator.ne(y,y):  False
operator.le(x,y):  True
operator.ge(y,x):  True

2つのリストを比較:

例

# operator モジュールをインポート
import operator

a = [1, 2]
b = [2, 3]
c = [2, 3]
print("operator.eq(a,b): ", operator.eq(a,b))
print("operator.eq(c,b): ", operator.eq(c,b))

上記のコードの出力結果は次のとおりです。

operator.eq(a,b):  False
operator.eq(c,b):  True

演算子関数

operator モジュールは、Python の組み込み演算子に対応する高効率な関数群を提供します。例えば、operator.add(x, y)は式x+yと同じです。

関数に含まれる種類は、オブジェクトの比較演算、論理演算、数学演算、シーケンス演算です。

オブジェクト比較関数はすべてのオブジェクトに適用され、関数名は対応する比較演算子に基づいて命名されています。

多くの関数名は特別なメソッド名と同じですが、二重アンダースコアがありません。後方互換性のために、二重アンダースコアを含む関数も多数保持されていますが、明確にするために、二重アンダースコアのない関数を使用することをお勧めします。

例

# Python の例
# add(), sub(), mul()
 
# operator モジュールをインポート
import operator
 
# 変数を初期化
a = 4
 
b = 3
 
# add() を使用して2つの値を加算
print ("add() 演算結果 :",end="");
print (operator.add(a, b))
 
# sub() を使用して2つの値を減算
print ("sub() 演算結果 :",end="");
print (operator.sub(a, b))
 
# mul() を使用して2つの値を乗算
print ("mul() 演算結果 :",end="");
print (operator.mul(a, b))

上記のコードの出力結果は次のとおりです。

add() 运算结果 :7
sub() 运算结果 :1
mul() 运算结果 :12

演算

構文

関数

加算

a + b

add(a, b)

文字列連結

seq1 + seq2

concat(seq1, seq2)

帰属テスト

obj in seq

contains(seq, obj)

除算

a / b

truediv(a, b)

除算

a // b

floordiv(a, b)

ビット単位 AND

a & b

and_(a, b)

ビット単位 XOR

a ^ b

xor(a, b)

ビット単位 反転

~ a

invert(a)

ビット単位 OR

a | b

or_(a, b)

冪乗

a ** b

pow(a, b)

同一性

a is b

is_(a, b)

同一性

a is not b

is_not(a, b)

インデックス代入

obj[k] = v

setitem(obj, k, v)

インデックス削除

del obj[k]

delitem(obj, k)

インデックス取得

obj[k]

getitem(obj, k)

左シフト

a << b

lshift(a, b)

剰余

a % b

mod(a, b)

乗算

a * b

mul(a, b)

行列乗算

a @ b

matmul(a, b)

符号反転(算術)

- a

neg(a)

論理否定

not a

not_(a)

単項プラス

+ a

pos(a)

右シフト

a >> b

rshift(a, b)

スライス代入

seq[i:j] = values

setitem(seq, slice(i, j), values)

スライス削除

del seq[i:j]

delitem(seq, slice(i, j))

スライス取得

seq[i:j]

getitem(seq, slice(i, j))

文字列フォーマット

s % obj

mod(s, obj)

減算

a - b

sub(a, b)

真値テスト

obj

truth(obj)

比較

a < b

lt(a, b)

比較

a <= b

le(a, b)

等価

a == b

eq(a, b)

不等価

a != b

ne(a, b)

比較

a >= b

ge(a, b)

比較

a > b

gt(a, b)

その他の拡張