15.2. The operator Module
The operator module supplies functions that are equivalent to Python's operators. These functions are handy in cases where callables must be stored, passed as arguments, or returned as function results. The functions in operator have the same names as the corresponding special methods (covered in "Special Methods" on page 104). Each function is available with two names, with and without leading and trailing double underscores (e.g., both operator.add(a,b) and operator._ _add_ _(a,b) return a+b). Table 15-1 lists the functions supplied by the operator module.
Table 15-1. Functions supplied by the operator moduleMethod | Signature | Behaves like |
---|
abs | abs(a) | abs(a) | add | add(a,b) | a+b | and_ | and_(a,b) | a&b | concat | concat(a,b) | a+b | contains | contains(a,b) | b in a | countOf | countOf(a,b) | a.count(b) | delitem | delitem(a,b) | del a[b] | delslice | delslice(a,b,c) | del a[b:c] | div | div(a,b) | a/b | eq | eq(a,b) | a==b | floordiv | floordiv(a,b) | a//b | ge | ge(a,b) | a>=b | getitem | getitem(a,b) | a[b] | getslice | getslice(a,b,c) | a[b:c] | gt | gt(a,b) | a>b | indexOf | indexOf(a,b) | a.index(b) | invert, inv | invert(a), inv(a) | ~a | is | is(a,b) | a is b | is_not | is_not(a,b) | a is not b | le | le(a,b) | a<=b | lshift | lshift(a,b) | a<<b | lt | lt(a,b) | a<b | mod | mod(a,b) | a%b | mul | mul(a,b) | a*b | ne | ne(a,b) | a!=b | neg | neg(a) | -a | not_ | not_(a) | not a | or_ | or_(a,b) | a|b | pos | pos(a) | +a | repeat | repeat(a,b) | a*b | rshift | rshift(a,b) | a>>b | setitem | setitem(a,b,c) | a[b]=c | setslice | setslice(a,b,c,d) | a[b:c]=d | sub | sub(a,b) | a-b | truediv | truediv(a,b) | a/b # "true" div -> no truncation | truth | truth(a) | not not a, bool(a) | xor_ | xor(a,b) | a^b |
Module operator also supplies two higher-order functions whose results are functions suitable for passing as named argument key= to the sort method of lists, the sorted built-in function, and (in Python 2.5) other built-in functions such as min and max.
attrgetter | attrgetter(attr)
Returns a callable f such that f(o) is the same as getattr(o,attr).
| itemgetter | itemgetter(key)
Returns a callable f such that f(o) is the same as getitem(o,key).
For example, say that L is a list of lists, with each sublist at least three items long, and you want to sort L, in-place, based on the third item of each sublist. The simplest way is:
import operator L.sort(key=operator.itemgetter(2))
|
![](images/pixel.jpg) |