python标准库之函数式编程(3)
operator模块输出一系列对应Python内部操作符的函数。
一、常见的函数操作
| 操作 | 语法 | 函数 | 
|---|---|---|
| 加法 | 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) | 
| 按位与 | a & b | and_(a, b) | 
| 按位异或 | a ^ b | xor(a, b) | 
| 按位求反 | ~ a | invert(a) | 
| 按位求或 | 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)) | 
| 得到片段 | swq[i : j] | getitme(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 | ge(a, b) | 
二、序列相关操作
1  | # 返回a + b,a与b都为序列  | 
三、高级操作
不管是attrgetter()还是itemgetter(),它们跟sorted、map这些高阶函数结合起来使用,可以发挥出比lambda表达式更加神奇的效果。
1、itemgetter()
1  | from operator import itemgetter  | 
2、attrgetter()
1  | # coding:utf-8  |