The `operator` module exports a set of functions implemented in C
corresponding to the intrinsic operators of Python. For example,
`operator.add(x, y)` is equivalent to the expression `x+y`. The
function names are those used for special class methods; variants
without leading and trailing `__` are also provided for convenience.

The functions fall into categories that perform object comparisons, logical operations, mathematical operations, sequence operations, and abstract type tests.

The object comparison functions are useful for all objects, and are named after the rich comparison operators they support:

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)

Perform “rich comparisons” between

aandb. Specifically,lt(a, b)is equivalent toa < b,le(a, b)is equivalent toa <= b,eq(a, b)is equivalent toa == b,ne(a, b)is equivalent toa != b,gt(a, b)is equivalent toa > bandge(a, b)is equivalent toa >= b. Note that unlike the built-incmp(), these functions can return any value, which may or may not be interpretable as a Boolean value. SeeComparisonsfor more information about rich comparisons.New in version 2.2.

The logical operations are also generally applicable to all objects, and support truth tests, identity tests, and boolean operations:

operator.not_(obj) operator.__not__(obj)

Return the outcome ofnotobj. (Note that there is no__not__()method for object instances; only the interpreter core defines this operation. The result is affected by the__nonzero__()and__len__()methods.)

operator.truth(obj)

ReturnTrueifobjis true, andFalseotherwise. This is equivalent to using theboolconstructor.

operator.is_(a, b)

Return

a is b. Tests object identity.New in version 2.3.

operator.is_not(a, b)

Return

a is not b. Tests object identity.New in version 2.3.

The mathematical and bitwise operations are the most numerous:

operator.abs(obj) operator.__abs__(obj)

Return the absolute value ofobj.

operator.add(a, b) operator.__add__(a, b)

Returna + b, foraandbnumbers.

operator.and_(a, b) operator.__and__(a, b)

Return the bitwise and ofaandb.

operator.div(a, b) operator.__div__(a, b)

Returna / bwhen__future__.divisionis not in effect. This is also known as “classic” division.

operator.floordiv(a, b) operator.__floordiv__(a, b)

Return

a // b.New in version 2.2.

operator.inv(obj) operator.invert(obj) operator.__inv__(obj) operator.__invert__(obj)

Return the bitwise inverse of the number

obj. This is equivalent to~obj.New in version 2.0: The names

invert()and__invert__().

operator.lshift(a, b) operator.__lshift__(a, b)

Returnashifted left byb.

operator.mod(a, b) operator.__mod__(a, b)

Returna % b.

operator.mul(a, b) operator.__mul__(a, b)

Returna * b, foraandbnumbers.

operator.neg(obj) operator.__neg__(obj)

Returnobjnegated.

operator.or_(a, b) operator.__or__(a, b)

Return the bitwise or ofaandb.

operator.pos(obj) operator.__pos__(obj)

Returnobjpositive.

operator.pow(a, b) operator.__pow__(a, b)

Return

a ** b, foraandbnumbers.New in version 2.3.

operator.rshift(a, b) operator.__rshift__(a, b)

Returnashifted right byb.

operator.sub(a, b) operator.__sub__(a, b)

Returna - b.

operator.truediv(a, b) operator.__truediv__(a, b)

Return

a / bwhen__future__.divisionis in effect. This is also known as “true” division.New in version 2.2.

operator.xor(a, b) operator.__xor__(a, b)

Return the bitwise exclusive or ofaandb.

operator.index(a) operator.__index__(a)

Return

aconverted to an integer. Equivalent toa.__index__().New in version 2.5.

Operations which work with sequences include:

operator.concat(a, b) operator.__concat__(a, b)

Returna + bforaandbsequences.

operator.contains(a, b) operator.__contains__(a, b)

Return the outcome of the test

b in a. Note the reversed operands.New in version 2.0: The name

__contains__().

operator.countOf(a, b)

Return the number of occurrences ofbina.

operator.delitem(a, b) operator.__delitem__(a, b)

Remove the value ofaat indexb.

operator.delslice(a, b, c) operator.__delslice__(a, b, c)

Delete the slice of

afrom indexbto indexc-1.Deprecated since version 2.6: This function is removed in Python 3.0. Use

delitem()with a slice index.

operator.getitem(a, b) operator.__getitem__(a, b)

Return the value ofaat indexb.

operator.getslice(a, b, c) operator.__getslice__(a, b, c)

Return the slice of

afrom indexbto indexc-1.Deprecated since version 2.6: This function is removed in Python 3.0. Use

getitem()with a slice index.

operator.indexOf(a, b)

Return the index of the first of occurrence ofbina.

operator.repeat(a, b) operator.__repeat__(a, b)

Deprecated since version 2.6: This function is removed in Python 3.0. Use

__mul__()instead.Return

a * bwhereais a sequence andbis an integer.

operator.sequenceIncludes(...)

Deprecated since version 2.0: Use

contains()instead.Alias for

contains().

operator.setitem(a, b, c) operator.__setitem__(a, b, c)

Set the value ofaat indexbtoc.

operator.setslice(a, b, c, v) operator.__setslice__(a, b, c, v)

Set the slice of

afrom indexbto indexc-1to the sequencev.Deprecated since version 2.6: This function is removed in Python 3.0. Use

setitem()with a slice index.

Example use of operator functions:

>>> # Elementwise multiplication >>> map(mul, [0, 1, 2, 3], [10, 20, 30, 40]) [0, 20, 60, 120]>>> # Dot product >>> sum(map(mul, [0, 1, 2, 3], [10, 20, 30, 40])) 200

Many operations have an “in-place” version. The following functions
provide a more primitive access to in-place operators than the usual
syntax does; for example, the *statement* `x += y` is equivalent to
`x = operator.iadd(x, y)`. Another way to put it is to say that `z
= operator.iadd(x, y)` is equivalent to the compound statement `z =
x; z += y`.

operator.iadd(a, b) operator.__iadd__(a, b)

a = iadd(a, b)is equivalent toa += b.New in version 2.5.

operator.iand(a, b) operator.__iand__(a, b)

a = iand(a, b)is equivalent toa &= b.New in version 2.5.

operator.iconcat(a, b) operator.__iconcat__(a, b)

a = iconcat(a, b)is equivalent toa += bforaandbsequences.New in version 2.5.

operator.idiv(a, b) operator.__idiv__(a, b)

a = idiv(a, b)is equivalent toa /= bwhen__future__.divisionis not in effect.New in version 2.5.

operator.ifloordiv(a, b) operator.__ifloordiv__(a, b)

a = ifloordiv(a, b)is equivalent toa //= b.New in version 2.5.

operator.ilshift(a, b) operator.__ilshift__(a, b)

a = ilshift(a, b)is equivalent toa <````<= b.New in version 2.5.

operator.imod(a, b) operator.__imod__(a, b)

a = imod(a, b)is equivalent toa %= b.New in version 2.5.

operator.imul(a, b) operator.__imul__(a, b)

a = imul(a, b)is equivalent toa *= b.New in version 2.5.

operator.ior(a, b) operator.__ior__(a, b)

a = ior(a, b)is equivalent toa |= b.New in version 2.5.

operator.ipow(a, b) operator.__ipow__(a, b)

a = ipow(a, b)is equivalent toa **= b.New in version 2.5.

operator.irepeat(a, b) operator.__irepeat__(a, b)

Deprecated since version 2.6: This function is removed in Python 3.0. Use

__imul__()instead.

a = irepeat(a, b)is equivalent toa *= bwhereais a sequence andbis an integer.New in version 2.5.

operator.irshift(a, b) operator.__irshift__(a, b)

a = irshift(a, b)is equivalent toa >>= b.New in version 2.5.

operator.isub(a, b) operator.__isub__(a, b)

a = isub(a, b)is equivalent toa -= b.New in version 2.5.

operator.itruediv(a, b) operator.__itruediv__(a, b)

a = itruediv(a, b)is equivalent toa /= bwhen__future__.divisionis in effect.New in version 2.5.

operator.ixor(a, b) operator.__ixor__(a, b)

a = ixor(a, b)is equivalent toa ^= b.New in version 2.5.

The `operator` module also defines a few predicates to test the type
of objects; however, these are not all reliable. It is preferable to
test abstract base classes instead (see `collections` and
`numbers` for details).

operator.isCallable(obj)

Deprecated since version 2.0: Use

isinstance(x, collections.Callable)instead.Returns true if the object

objcan be called like a function, otherwise it returns false. True is returned for functions, bound and unbound methods, class objects, and instance objects which support the__call__()method.

operator.isMappingType(obj)

Deprecated since version 2.6: This function is removed in Python 3.0. Use

isinstance(x, collections.Mapping)instead.Returns true if the object

objsupports the mapping interface. This is true for dictionaries and all instance objects defining__getitem__().

operator.isNumberType(obj)

Deprecated since version 2.6: This function is removed in Python 3.0. Use

isinstance(x, numbers.Number)instead.Returns true if the object

objrepresents a number. This is true for all numeric types implemented in C.

operator.isSequenceType(obj)

Deprecated since version 2.6: This function is removed in Python 3.0. Use

isinstance(x, collections.Sequence)instead.Returns true if the object

objsupports the sequence protocol. This returns true for all objects which define sequence methods in C, and for all instance objects defining__getitem__().

The `operator` module also defines tools for generalized attribute
and item lookups. These are useful for making fast field extractors
as arguments for `map()`, `sorted()`, `itertools.groupby()`, or
other functions that expect a function argument.

operator.attrgetter(attr[, args...])

Return a callable object that fetches

attrfrom its operand. If more than one attribute is requested, returns a tuple of attributes. After,f = attrgetter('name'), the callf(b)returnsb.name. After,f = attrgetter('name', 'date'), the callf(b)returns(b.name, b.date).The attribute names can also contain dots; after

f = attrgetter('date.month'), the callf(b)returnsb.date.month.New in version 2.4.

Changed in version 2.5: Added support for multiple attributes.

Changed in version 2.6: Added support for dotted attributes.

operator.itemgetter(item[, args...])

Return a callable object that fetches

itemfrom its operand using the operand’s__getitem__()method. If multiple items are specified, returns a tuple of lookup values. Equivalent to:

- def itemgetter(*items):

- if len(items) == 1:
item = items[0] def g(obj):

return obj[item]- else:

- def g(obj):
- return tuple(obj[item] for item in items)
return g

The items can be any type accepted by the operand’s

__getitem__()method. Dictionaries accept any hashable value. Lists, tuples, and strings accept an index or a slice:>>> itemgetter(1)('ABCDEFG') 'B' >>> itemgetter(1,3,5)('ABCDEFG') ('B', 'D', 'F') >>> itemgetter(slice(2,None))('ABCDEFG') 'CDEFG'New in version 2.4.

Changed in version 2.5: Added support for multiple item extraction.

Example of using

itemgetter()to retrieve specific fields from a tuple record:>>> inventory = [('apple', 3), ('banana', 2), ('pear', 5), ('orange', 1)] >>> getcount = itemgetter(1) >>> map(getcount, inventory) [3, 2, 5, 1] >>> sorted(inventory, key=getcount) [('orange', 1), ('banana', 2), ('apple', 3), ('pear', 5)]

operator.methodcaller(name[, args...])

Return a callable object that calls the method

nameon its operand. If additional arguments and/or keyword arguments are given, they will be given to the method as well. Afterf = methodcaller('name'), the callf(b)returnsb.name(). Afterf = methodcaller('name', 'foo', bar=1), the callf(b)returnsb.name('foo', bar=1).New in version 2.6.

This table shows how abstract operations correspond to operator
symbols in the Python syntax and the functions in the `operator`
module.

Operation | Syntax | Function |
---|---|---|

Addition | a + b |
add(a, b) |

Concatenation | seq1 + seq2 |
concat(seq1, seq2) |

Containment Test | obj in seq |
contains(seq, obj) |

Division | a / b |
div(a, b) (without
__future__.division) |

Division | a / b |
truediv(a, b) (with
__future__.division) |

Division | a // b |
floordiv(a, b) |

Bitwise And | a & b |
and_(a, b) |

Bitwise Exclusive Or | a ^ b |
xor(a, b) |

Bitwise Inversion | ~ a |
invert(a) |

Bitwise Or | a | b |
or_(a, b) |

Exponentiation | a ** b |
pow(a, b) |

Identity | a is b |
is_(a, b) |

Identity | a 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 | a << b |
lshift(a, b) |

Modulo | a % b |
mod(a, b) |

Multiplication | a * b |
mul(a, b) |

Negation (Arithmetic) | - a |
neg(a) |

Negation (Logical) | not a |
not_(a) |

Right Shift | a >> b |
rshift(a, b) |

Sequence Repetition | seq * i |
repeat(seq, i) |

Slice Assignment | seq[i:j] = values |
setslice(seq, i, j, values) |

Slice Deletion | del seq[i:j] |
delslice(seq, i, j) |

Slicing | seq[i:j] |
getslice(seq, i, j) |

String Formatting | s % obj |
mod(s, obj) |

Subtraction | a - b |
sub(a, b) |

Truth Test | obj |
truth(obj) |

Ordering | a < b |
lt(a, b) |

Ordering | a <= b |
le(a, b) |

Equality | a == b |
eq(a, b) |

Difference | a != b |
ne(a, b) |

Ordering | a >= b |
ge(a, b) |

Ordering | a > b |
gt(a, b) |