operator 模块,没有什么特殊的,简单说就是把常用的数学计算符号(+,-,*,**,/,<<,>>等)逻辑运算(or,and,xor,is,is_not)等以函数形式表示了。此外还有一些对序列(sequence)的操作函数,对对象的操作函数。所有这些函数都是可以在编写自己的类的时候定义的(前后“__”),定义后就可以直接用符号进行运算。

1、模块特殊函数:都返回一个可调用对象,可以用于 map(), sorted(), itertools.groupby() 等接受一个函数对象作为参数的函数

operator.attrgetter(*attrs):返回对象的对应属性
operator.itemgetter(*items):返回对象对应位置的值,相当于 __getitem__() 方法
operator.methodcaller(name[, args...]):返回对象的对应方法函数,额外输入的 args 会作为此方法的默认参数

2、模块常规函数及对应符号:

OperationSyntaxFunction
Addition b add(a, b)
Concatenation seq1 seq2 concat(seq1, seq2)
Containment Test obj in seq contains(seq, obj)
Division b div(a, b) (without __future__.division)
Division b truediv(a, b) (with __future__.division)
Division // b floordiv(a, b)
Bitwise And b and_(a, b)
Bitwise Exclusive Or b xor(a, b)
Bitwise Inversion a invert(a)
Bitwise Or b or_(a, b)
Exponentiation ** b pow(a, b)
Identity is b is_(a, b)
Identity is not b is_not(a, b)
Indexed Assignment obj[k] v setitem(obj, k, v)
Indexed Deletion del obj[k] delitem(obj, k)
Indexing obj[k] getitem(obj, k)
Left Shift << b lshift(a, b)
Modulo b mod(a, b)
Multiplication b mul(a, b)
Negation (Arithmetic) a neg(a)
Negation (Logical) not a not_(a)
Positive a pos(a)
Right Shift >> b rshift(a, b)
Sequence Repetition seq i repeat(seq, i)
Slice Assignment seq[i:j] values setitem(seq, slice(i, j), values)
Slice Deletion del seq[i:j] delitem(seq, slice(i, j))
Slicing seq[i:j] getitem(seq, slice(i, j))
String Formatting obj mod(s, obj)
Subtraction b sub(a, b)
Truth Test obj truth(obj)
Ordering b lt(a, b)
Ordering <= b le(a, b)
Equality == b eq(a, b)
Difference != b ne(a, b)
Ordering >= b ge(a, b)
Ordering b gt(a, b)

3、混合赋值函数都是在对应操作方法前加个 i,and、or、is 还要把结尾的“_”去掉