模块简介
operator提供了和算术运算符一样高效的方法。
PS:该模块存粹是为了写C语言这种纯函数编程的代码,实用性仅仅在与map(),sorted()这些函数里面。实际没什么用
常用方法
比较运算
| 运算 | 函数 | 语法 |
|---|---|---|
| 小于 | lt(a, b) | a < b |
| 小于等于 | le(a, b) | a <= b |
| 大于 | gt(a, b) | a > b |
| 大于等于 | ge(a, b) | a >= b |
| 等于 | eq(a, b) | a == b |
| 不等于 | ne(a, b) | a != b |
逻辑运算
| 运算 | 函数 | 语法 |
|---|---|---|
| 与 | and_(a, b) | a & b |
| 或 | or_(a, b) | a |
| 异或 | xor(a, b) | a ^ b |
| 取反 | invert(a, b) | ~ a |
| 对象是否相等 | is_(a, b) | a is b |
| 对象是否不相等 | is_not(a, b) | a is not b |
| 真值 | truth(obj) | obj |
数学运算
| 运算 | 函数 | 语法 |
|---|---|---|
| 加 | add(a ,b) | a + b |
| 除 | truediv(a, b) | a / b |
| 乘 | mul(a, b) | a * b |
| 减 | sub(a, b) | a - b |
| 幂 | pow(a, b) | a ** b |
| 负数 | neg(a) | - a |
| 正数 | pos(a) | + a |
| 取模 | mod(a, b) | a % b |
序列运算
| 运算 | 函数 | 语法 |
|---|---|---|
| 字符串拼接 | concat(seq1, seq2) | seq1 + seq2 |
| 包含 | contains(seq, obj) | obj in seq |
| 索引赋值 | setitem(obj, i, v) | obj[i] = v |
| 索引删除 | delitem(obj, i) | del obj[i] |
| 索引取值 | getitem(obj, i) | obj[i] |
| 切片赋值 | setitem(seq, slice(i, j), values) | seq[i:j] = values |
| 切片删除 | delitem(seq, slice(i, j)) | del seq[i:j] |
| 切片取值 | getitem(seq, slice(i, j)) | seq[i:j] |
| 格式化 | mod(s, obj) | s % obj |
itemgetter类
itemgetter类会返回一个可调用对象,传入多个索引参数则返回按照索引参数顺序提取的值构成的元组。可用于map(),sorted()操作
1 | __init__(self, item, *items) |
1 | from operator import itemgetter |
attrgetter类
attrgetter类会根据名称来提取对象的属性。如果参数名中包含.(点号),那么attrgetter会深入嵌套对象访问属性。可用于map(),sorted()操作
1 | __init__(self, attr, *attrs) |
1 | from operator import attrgetter |
methodcaller类
methodcaller类会调用参数指定的方法。
1 | __init__(self, name, /, *args, **kwargs) |
1 | from operator import methodcaller |