blob: 5ba3209be010fa184255679ed602339a1ff2743a [file] [log] [blame]
Fred Drake295da241998-08-10 19:42:37 +00001\section{\module{operator} ---
2 Standard operators as functions.}
Fred Drakeb91e9341998-07-23 17:59:49 +00003\declaremodule{builtin}{operator}
Fred Drake295da241998-08-10 19:42:37 +00004\sectionauthor{Skip Montanaro}{skip@automatrix.com}
Fred Drakeb91e9341998-07-23 17:59:49 +00005
6\modulesynopsis{All Python's standard operators as built-in functions.}
7
Guido van Rossum61ed4db1996-12-06 21:22:41 +00008
Fred Drakec07ae9f1998-03-08 05:56:15 +00009The \module{operator} module exports a set of functions implemented in C
Guido van Rossum61ed4db1996-12-06 21:22:41 +000010corresponding to the intrinsic operators of Python. For example,
Fred Drakef3e6df11997-12-29 17:11:55 +000011\code{operator.add(x, y)} is equivalent to the expression \code{x+y}. The
Guido van Rossum61ed4db1996-12-06 21:22:41 +000012function names are those used for special class methods; variants without
Fred Drake98b032a1997-12-04 14:20:59 +000013leading and trailing \samp{__} are also provided for convenience.
Guido van Rossum61ed4db1996-12-06 21:22:41 +000014
Fred Drakee89659c2001-08-10 15:55:09 +000015The functions fall into categories that perform object comparisons,
16logical operations, mathematical operations, sequence operations, and
17abstract type tests.
Guido van Rossum61ed4db1996-12-06 21:22:41 +000018
Fred Drakee89659c2001-08-10 15:55:09 +000019The object comparison functions are useful for all objects, and are
20named after the rich comparison operators they support:
21
22\begin{funcdesc}{lt}{a, b}
23\funcline{le}{a, b}
24\funcline{eq}{a, b}
25\funcline{ne}{a, b}
26\funcline{ge}{a, b}
27\funcline{gt}{a, b}
28\funcline{__lt__}{a, b}
29\funcline{__le__}{a, b}
30\funcline{__eq__}{a, b}
31\funcline{__ne__}{a, b}
32\funcline{__ge__}{a, b}
33\funcline{__gt__}{a, b}
34Perform ``rich comparisons'' between \var{a} and \var{b}. Specifically,
35\code{lt(\var{a}, \var{b})} is equivalent to \code{\var{a} < \var{b}},
36\code{le(\var{a}, \var{b})} is equivalent to \code{\var{a} <= \var{b}},
37\code{eq(\var{a}, \var{b})} is equivalent to \code{\var{a} == \var{b}},
38\code{ne(\var{a}, \var{b})} is equivalent to \code{\var{a} != \var{b}},
39\code{gt(\var{a}, \var{b})} is equivalent to \code{\var{a} > \var{b}}
40and
41\code{ge(\var{a}, \var{b})} is equivalent to \code{\var{a} >= \var{b}}.
42Note that unlike the built-in \function{cmp()}, these functions can
43return any value, which may or may not be interpretable as a Boolean
44value. See the \citetitle[../ref/ref.html]{Python Reference Manual}
Raymond Hettinger68804312005-01-01 00:28:46 +000045for more information about rich comparisons.
Fred Drakee89659c2001-08-10 15:55:09 +000046\versionadded{2.2}
Guido van Rossum61ed4db1996-12-06 21:22:41 +000047\end{funcdesc}
48
Fred Drakee89659c2001-08-10 15:55:09 +000049
50The logical operations are also generally applicable to all objects,
Raymond Hettinger1b56de02003-02-21 05:42:13 +000051and support truth tests, identity tests, and boolean operations:
Fred Drakee89659c2001-08-10 15:55:09 +000052
53\begin{funcdesc}{not_}{o}
54\funcline{__not__}{o}
55Return the outcome of \keyword{not} \var{o}. (Note that there is no
56\method{__not__()} method for object instances; only the interpreter
57core defines this operation. The result is affected by the
58\method{__nonzero__()} and \method{__len__()} methods.)
Guido van Rossum61ed4db1996-12-06 21:22:41 +000059\end{funcdesc}
60
Fred Drakee89659c2001-08-10 15:55:09 +000061\begin{funcdesc}{truth}{o}
Fred Drake8ec17a02003-01-11 23:15:47 +000062Return \constant{True} if \var{o} is true, and \constant{False}
Neal Norwitz06daee92003-01-12 15:04:54 +000063otherwise. This is equivalent to using the \class{bool}
Fred Drake8ec17a02003-01-11 23:15:47 +000064constructor.
Guido van Rossum61ed4db1996-12-06 21:22:41 +000065\end{funcdesc}
66
Raymond Hettinger9543b342003-01-18 23:22:20 +000067\begin{funcdesc}{is_}{a, b}
68Return \code{\var{a} is \var{b}}. Tests object identity.
Raymond Hettinger83c18742003-11-02 09:50:56 +000069\versionadded{2.3}
Raymond Hettinger9543b342003-01-18 23:22:20 +000070\end{funcdesc}
71
72\begin{funcdesc}{is_not}{a, b}
73Return \code{\var{a} is not \var{b}}. Tests object identity.
Raymond Hettinger83c18742003-11-02 09:50:56 +000074\versionadded{2.3}
Raymond Hettinger9543b342003-01-18 23:22:20 +000075\end{funcdesc}
76
Guido van Rossum61ed4db1996-12-06 21:22:41 +000077
Fred Drakee89659c2001-08-10 15:55:09 +000078The mathematical and bitwise operations are the most numerous:
Guido van Rossum61ed4db1996-12-06 21:22:41 +000079
80\begin{funcdesc}{abs}{o}
Fred Drakec07ae9f1998-03-08 05:56:15 +000081\funcline{__abs__}{o}
Fred Drake0514ce11997-12-16 14:29:48 +000082Return the absolute value of \var{o}.
Guido van Rossum61ed4db1996-12-06 21:22:41 +000083\end{funcdesc}
84
Fred Drakee89659c2001-08-10 15:55:09 +000085\begin{funcdesc}{add}{a, b}
86\funcline{__add__}{a, b}
87Return \var{a} \code{+} \var{b}, for \var{a} and \var{b} numbers.
Guido van Rossum61ed4db1996-12-06 21:22:41 +000088\end{funcdesc}
89
Fred Drake98b032a1997-12-04 14:20:59 +000090\begin{funcdesc}{and_}{a, b}
Fred Drakec07ae9f1998-03-08 05:56:15 +000091\funcline{__and__}{a, b}
Fred Drake0514ce11997-12-16 14:29:48 +000092Return the bitwise and of \var{a} and \var{b}.
Guido van Rossum61ed4db1996-12-06 21:22:41 +000093\end{funcdesc}
94
Fred Drakee89659c2001-08-10 15:55:09 +000095\begin{funcdesc}{div}{a, b}
96\funcline{__div__}{a, b}
97Return \var{a} \code{/} \var{b} when \code{__future__.division} is not
98in effect. This is also known as ``classic'' division.
99\end{funcdesc}
100
101\begin{funcdesc}{floordiv}{a, b}
102\funcline{__floordiv__}{a, b}
103Return \var{a} \code{//} \var{b}.
104\versionadded{2.2}
105\end{funcdesc}
106
107\begin{funcdesc}{inv}{o}
108\funcline{invert}{o}
109\funcline{__inv__}{o}
110\funcline{__invert__}{o}
111Return the bitwise inverse of the number \var{o}. This is equivalent
112to \code{\textasciitilde}\var{o}. The names \function{invert()} and
113\function{__invert__()} were added in Python 2.0.
114\end{funcdesc}
115
116\begin{funcdesc}{lshift}{a, b}
117\funcline{__lshift__}{a, b}
118Return \var{a} shifted left by \var{b}.
119\end{funcdesc}
120
121\begin{funcdesc}{mod}{a, b}
122\funcline{__mod__}{a, b}
123Return \var{a} \code{\%} \var{b}.
124\end{funcdesc}
125
126\begin{funcdesc}{mul}{a, b}
127\funcline{__mul__}{a, b}
128Return \var{a} \code{*} \var{b}, for \var{a} and \var{b} numbers.
129\end{funcdesc}
130
131\begin{funcdesc}{neg}{o}
132\funcline{__neg__}{o}
133Return \var{o} negated.
134\end{funcdesc}
135
Fred Drake98b032a1997-12-04 14:20:59 +0000136\begin{funcdesc}{or_}{a, b}
Fred Drakec07ae9f1998-03-08 05:56:15 +0000137\funcline{__or__}{a, b}
Fred Drake0514ce11997-12-16 14:29:48 +0000138Return the bitwise or of \var{a} and \var{b}.
Guido van Rossum61ed4db1996-12-06 21:22:41 +0000139\end{funcdesc}
140
Fred Drakee89659c2001-08-10 15:55:09 +0000141\begin{funcdesc}{pos}{o}
142\funcline{__pos__}{o}
143Return \var{o} positive.
144\end{funcdesc}
145
Raymond Hettinger5959c552002-08-19 03:19:09 +0000146\begin{funcdesc}{pow}{a, b}
147\funcline{__pow__}{a, b}
148Return \var{a} \code{**} \var{b}, for \var{a} and \var{b} numbers.
Neal Norwitz11b795c2002-08-19 22:38:01 +0000149\versionadded{2.3}
Raymond Hettinger5959c552002-08-19 03:19:09 +0000150\end{funcdesc}
151
Fred Drakee89659c2001-08-10 15:55:09 +0000152\begin{funcdesc}{rshift}{a, b}
153\funcline{__rshift__}{a, b}
154Return \var{a} shifted right by \var{b}.
155\end{funcdesc}
156
157\begin{funcdesc}{sub}{a, b}
158\funcline{__sub__}{a, b}
159Return \var{a} \code{-} \var{b}.
160\end{funcdesc}
161
162\begin{funcdesc}{truediv}{a, b}
163\funcline{__truediv__}{a, b}
164Return \var{a} \code{/} \var{b} when \code{__future__.division} is in
Armin Rigoecc275b2005-12-29 16:04:25 +0000165effect. This is also known as ``true'' division.
Fred Drakee89659c2001-08-10 15:55:09 +0000166\versionadded{2.2}
167\end{funcdesc}
168
Guido van Rossuma58e9ed1998-05-22 18:48:37 +0000169\begin{funcdesc}{xor}{a, b}
170\funcline{__xor__}{a, b}
171Return the bitwise exclusive or of \var{a} and \var{b}.
172\end{funcdesc}
173
Guido van Rossum38fff8c2006-03-07 18:50:55 +0000174\begin{funcdesc}{index}{a}
175\funcline{__index__}{a}
176Return \var{a} converted to an integer. Equivalent to \var{a}\code{.__index__()}.
177\versionadded{2.5}
178\end{funcdesc}
Guido van Rossuma58e9ed1998-05-22 18:48:37 +0000179
Fred Drakee89659c2001-08-10 15:55:09 +0000180Operations which work with sequences include:
Guido van Rossuma58e9ed1998-05-22 18:48:37 +0000181
Fred Drake98b032a1997-12-04 14:20:59 +0000182\begin{funcdesc}{concat}{a, b}
Fred Drakec07ae9f1998-03-08 05:56:15 +0000183\funcline{__concat__}{a, b}
Fred Drake0514ce11997-12-16 14:29:48 +0000184Return \var{a} \code{+} \var{b} for \var{a} and \var{b} sequences.
Guido van Rossum61ed4db1996-12-06 21:22:41 +0000185\end{funcdesc}
186
Guido van Rossuma58e9ed1998-05-22 18:48:37 +0000187\begin{funcdesc}{contains}{a, b}
Fred Drake5316ef42000-09-17 16:10:25 +0000188\funcline{__contains__}{a, b}
Guido van Rossuma58e9ed1998-05-22 18:48:37 +0000189Return the outcome of the test \var{b} \code{in} \var{a}.
Fred Drake5316ef42000-09-17 16:10:25 +0000190Note the reversed operands. The name \function{__contains__()} was
191added in Python 2.0.
192\end{funcdesc}
193
Guido van Rossuma58e9ed1998-05-22 18:48:37 +0000194\begin{funcdesc}{countOf}{a, b}
195Return the number of occurrences of \var{b} in \var{a}.
196\end{funcdesc}
197
Fred Drake98b032a1997-12-04 14:20:59 +0000198\begin{funcdesc}{delitem}{a, b}
Fred Drakec07ae9f1998-03-08 05:56:15 +0000199\funcline{__delitem__}{a, b}
Fred Drake0514ce11997-12-16 14:29:48 +0000200Remove the value of \var{a} at index \var{b}.
Guido van Rossum61ed4db1996-12-06 21:22:41 +0000201\end{funcdesc}
202
Fred Drakee89659c2001-08-10 15:55:09 +0000203\begin{funcdesc}{delslice}{a, b, c}
204\funcline{__delslice__}{a, b, c}
205Delete the slice of \var{a} from index \var{b} to index \var{c}\code{-1}.
206\end{funcdesc}
207
208\begin{funcdesc}{getitem}{a, b}
209\funcline{__getitem__}{a, b}
210Return the value of \var{a} at index \var{b}.
211\end{funcdesc}
212
Fred Drake98b032a1997-12-04 14:20:59 +0000213\begin{funcdesc}{getslice}{a, b, c}
Fred Drakec07ae9f1998-03-08 05:56:15 +0000214\funcline{__getslice__}{a, b, c}
Fred Drake0514ce11997-12-16 14:29:48 +0000215Return the slice of \var{a} from index \var{b} to index \var{c}\code{-1}.
Guido van Rossum61ed4db1996-12-06 21:22:41 +0000216\end{funcdesc}
217
Fred Drakee89659c2001-08-10 15:55:09 +0000218\begin{funcdesc}{indexOf}{a, b}
219Return the index of the first of occurrence of \var{b} in \var{a}.
220\end{funcdesc}
221
222\begin{funcdesc}{repeat}{a, b}
223\funcline{__repeat__}{a, b}
224Return \var{a} \code{*} \var{b} where \var{a} is a sequence and
225\var{b} is an integer.
226\end{funcdesc}
227
228\begin{funcdesc}{sequenceIncludes}{\unspecified}
229\deprecated{2.0}{Use \function{contains()} instead.}
230Alias for \function{contains()}.
231\end{funcdesc}
232
233\begin{funcdesc}{setitem}{a, b, c}
234\funcline{__setitem__}{a, b, c}
235Set the value of \var{a} at index \var{b} to \var{c}.
236\end{funcdesc}
237
Fred Drake98b032a1997-12-04 14:20:59 +0000238\begin{funcdesc}{setslice}{a, b, c, v}
Fred Drakec07ae9f1998-03-08 05:56:15 +0000239\funcline{__setslice__}{a, b, c, v}
Fred Drake0514ce11997-12-16 14:29:48 +0000240Set the slice of \var{a} from index \var{b} to index \var{c}\code{-1} to the
241sequence \var{v}.
Guido van Rossum61ed4db1996-12-06 21:22:41 +0000242\end{funcdesc}
243
Guido van Rossum61ed4db1996-12-06 21:22:41 +0000244
Armin Rigof5bd3b42005-12-29 16:50:42 +0000245Many operations have an ``in-place'' version. The following functions
246provide a more primitive access to in-place operators than the usual
247syntax does; for example, the statement \code{x += y} is equivalent to
248\code{x = operator.iadd(x, y)}. Another way to put it is to say that
249\code{z = operator.iadd(x, y)} is equivalent to the compound statement
250\code{z = x; z += y}.
251
252\begin{funcdesc}{iadd}{a, b}
253\funcline{__iadd__}{a, b}
254\code{a = iadd(a, b)} is equivalent to \code{a += b}.
255\versionadded{2.5}
256\end{funcdesc}
257
258\begin{funcdesc}{iand}{a, b}
259\funcline{__iand__}{a, b}
260\code{a = iand(a, b)} is equivalent to \code{a \&= b}.
261\versionadded{2.5}
262\end{funcdesc}
263
264\begin{funcdesc}{iconcat}{a, b}
265\funcline{__iconcat__}{a, b}
266\code{a = iconcat(a, b)} is equivalent to \code{a += b} for \var{a}
267and \var{b} sequences.
268\versionadded{2.5}
269\end{funcdesc}
270
271\begin{funcdesc}{idiv}{a, b}
272\funcline{__idiv__}{a, b}
273\code{a = idiv(a, b)} is equivalent to \code{a /= b} when
274\code{__future__.division} is not in effect.
275\versionadded{2.5}
276\end{funcdesc}
277
278\begin{funcdesc}{ifloordiv}{a, b}
279\funcline{__ifloordiv__}{a, b}
280\code{a = ifloordiv(a, b)} is equivalent to \code{a //= b}.
281\versionadded{2.5}
282\end{funcdesc}
283
284\begin{funcdesc}{ilshift}{a, b}
285\funcline{__ilshift__}{a, b}
286\code{a = ilshift(a, b)} is equivalent to \code{a <}\code{<= b}.
287\versionadded{2.5}
288\end{funcdesc}
289
290\begin{funcdesc}{imod}{a, b}
291\funcline{__imod__}{a, b}
292\code{a = imod(a, b)} is equivalent to \code{a \%= b}.
293\versionadded{2.5}
294\end{funcdesc}
295
296\begin{funcdesc}{imul}{a, b}
297\funcline{__imul__}{a, b}
298\code{a = imul(a, b)} is equivalent to \code{a *= b}.
299\versionadded{2.5}
300\end{funcdesc}
301
302\begin{funcdesc}{ior}{a, b}
303\funcline{__ior__}{a, b}
304\code{a = ior(a, b)} is equivalent to \code{a |= b}.
305\versionadded{2.5}
306\end{funcdesc}
307
308\begin{funcdesc}{ipow}{a, b}
309\funcline{__ipow__}{a, b}
310\code{a = ipow(a, b)} is equivalent to \code{a **= b}.
311\versionadded{2.5}
312\end{funcdesc}
313
314\begin{funcdesc}{irepeat}{a, b}
315\funcline{__irepeat__}{a, b}
316\code{a = irepeat(a, b)} is equivalent to \code{a *= b} where
317\var{a} is a sequence and \var{b} is an integer.
318\versionadded{2.5}
319\end{funcdesc}
320
321\begin{funcdesc}{irshift}{a, b}
322\funcline{__irshift__}{a, b}
Fred Drakef25fa6d2006-05-03 02:04:40 +0000323\code{a = irshift(a, b)} is equivalent to \code{a >>= b}.
Armin Rigof5bd3b42005-12-29 16:50:42 +0000324\versionadded{2.5}
325\end{funcdesc}
326
327\begin{funcdesc}{isub}{a, b}
328\funcline{__isub__}{a, b}
329\code{a = isub(a, b)} is equivalent to \code{a -= b}.
330\versionadded{2.5}
331\end{funcdesc}
332
333\begin{funcdesc}{itruediv}{a, b}
334\funcline{__itruediv__}{a, b}
335\code{a = itruediv(a, b)} is equivalent to \code{a /= b} when
336\code{__future__.division} is in effect.
337\versionadded{2.5}
338\end{funcdesc}
339
340\begin{funcdesc}{ixor}{a, b}
341\funcline{__ixor__}{a, b}
342\code{a = ixor(a, b)} is equivalent to \code{a \textasciicircum= b}.
343\versionadded{2.5}
344\end{funcdesc}
345
346
Fred Drakee89659c2001-08-10 15:55:09 +0000347The \module{operator} module also defines a few predicates to test the
Fred Drake0aa811c2001-10-20 04:24:09 +0000348type of objects. \note{Be careful not to misinterpret the
Fred Drake8d3312f2000-10-02 03:36:18 +0000349results of these functions; only \function{isCallable()} has any
Fred Drake0aa811c2001-10-20 04:24:09 +0000350measure of reliability with instance objects. For example:}
Fred Drake8d3312f2000-10-02 03:36:18 +0000351
352\begin{verbatim}
353>>> class C:
354... pass
355...
356>>> import operator
357>>> o = C()
358>>> operator.isMappingType(o)
Martin v. Löwisccabed32003-11-27 19:48:03 +0000359True
Fred Drake8d3312f2000-10-02 03:36:18 +0000360\end{verbatim}
361
362\begin{funcdesc}{isCallable}{o}
363\deprecated{2.0}{Use the \function{callable()} built-in function instead.}
364Returns true if the object \var{o} can be called like a function,
365otherwise it returns false. True is returned for functions, bound and
366unbound methods, class objects, and instance objects which support the
367\method{__call__()} method.
368\end{funcdesc}
369
370\begin{funcdesc}{isMappingType}{o}
371Returns true if the object \var{o} supports the mapping interface.
Raymond Hettingerad351f82005-04-07 05:36:17 +0000372This is true for dictionaries and all instance objects defining
373\method{__getitem__}.
Fred Drake0aa811c2001-10-20 04:24:09 +0000374\warning{There is no reliable way to test if an instance
Fred Drake8d3312f2000-10-02 03:36:18 +0000375supports the complete mapping protocol since the interface itself is
376ill-defined. This makes this test less useful than it otherwise might
Fred Drake0aa811c2001-10-20 04:24:09 +0000377be.}
Fred Drake8d3312f2000-10-02 03:36:18 +0000378\end{funcdesc}
379
380\begin{funcdesc}{isNumberType}{o}
381Returns true if the object \var{o} represents a number. This is true
Raymond Hettingerad351f82005-04-07 05:36:17 +0000382for all numeric types implemented in C.
Fred Drake0aa811c2001-10-20 04:24:09 +0000383\warning{There is no reliable way to test if an instance
Fred Drake8d3312f2000-10-02 03:36:18 +0000384supports the complete numeric interface since the interface itself is
385ill-defined. This makes this test less useful than it otherwise might
Fred Drake0aa811c2001-10-20 04:24:09 +0000386be.}
Fred Drake8d3312f2000-10-02 03:36:18 +0000387\end{funcdesc}
388
389\begin{funcdesc}{isSequenceType}{o}
390Returns true if the object \var{o} supports the sequence protocol.
391This returns true for all objects which define sequence methods in C,
Raymond Hettingerad351f82005-04-07 05:36:17 +0000392and for all instance objects defining \method{__getitem__}.
393\warning{There is no reliable
Fred Drake8d3312f2000-10-02 03:36:18 +0000394way to test if an instance supports the complete sequence interface
395since the interface itself is ill-defined. This makes this test less
Fred Drake0aa811c2001-10-20 04:24:09 +0000396useful than it otherwise might be.}
Fred Drake8d3312f2000-10-02 03:36:18 +0000397\end{funcdesc}
398
Guido van Rossum61ed4db1996-12-06 21:22:41 +0000399
Fred Drake0514ce11997-12-16 14:29:48 +0000400Example: Build a dictionary that maps the ordinals from \code{0} to
Raymond Hettingerfb5f04d2005-04-07 04:38:04 +0000401\code{255} to their character equivalents.
Guido van Rossum61ed4db1996-12-06 21:22:41 +0000402
Fred Drake19479911998-02-13 06:58:54 +0000403\begin{verbatim}
Guido van Rossum61ed4db1996-12-06 21:22:41 +0000404>>> import operator
405>>> d = {}
406>>> keys = range(256)
407>>> vals = map(chr, keys)
408>>> map(operator.setitem, [d]*len(keys), keys, vals)
Fred Drake19479911998-02-13 06:58:54 +0000409\end{verbatim}
Fred Drake8c2fd492000-10-22 03:19:30 +0000410
411
Raymond Hettinger166958b2003-12-01 13:18:39 +0000412The \module{operator} module also defines tools for generalized attribute
413and item lookups. These are useful for making fast field extractors
Raymond Hettingerb606b3d2003-12-17 20:50:46 +0000414as arguments for \function{map()}, \function{sorted()},
Raymond Hettinger166958b2003-12-01 13:18:39 +0000415\method{itertools.groupby()}, or other functions that expect a
416function argument.
417
Raymond Hettinger984f9bb2005-03-09 16:38:48 +0000418\begin{funcdesc}{attrgetter}{attr\optional{, args...}}
Raymond Hettinger166958b2003-12-01 13:18:39 +0000419Return a callable object that fetches \var{attr} from its operand.
Raymond Hettinger984f9bb2005-03-09 16:38:48 +0000420If more than one attribute is requested, returns a tuple of attributes.
Raymond Hettinger166958b2003-12-01 13:18:39 +0000421After, \samp{f=attrgetter('name')}, the call \samp{f(b)} returns
Raymond Hettinger984f9bb2005-03-09 16:38:48 +0000422\samp{b.name}. After, \samp{f=attrgetter('name', 'date')}, the call
423\samp{f(b)} returns \samp{(b.name, b.date)}.
Raymond Hettinger166958b2003-12-01 13:18:39 +0000424\versionadded{2.4}
Raymond Hettinger984f9bb2005-03-09 16:38:48 +0000425\versionchanged[Added support for multiple attributes]{2.5}
Raymond Hettinger166958b2003-12-01 13:18:39 +0000426\end{funcdesc}
427
Raymond Hettinger984f9bb2005-03-09 16:38:48 +0000428\begin{funcdesc}{itemgetter}{item\optional{, args...}}
Raymond Hettinger166958b2003-12-01 13:18:39 +0000429Return a callable object that fetches \var{item} from its operand.
Raymond Hettinger984f9bb2005-03-09 16:38:48 +0000430If more than one item is requested, returns a tuple of items.
Raymond Hettinger166958b2003-12-01 13:18:39 +0000431After, \samp{f=itemgetter(2)}, the call \samp{f(b)} returns
432\samp{b[2]}.
Raymond Hettinger984f9bb2005-03-09 16:38:48 +0000433After, \samp{f=itemgetter(2,5,3)}, the call \samp{f(b)} returns
434\samp{(b[2], b[5], b[3])}.
Raymond Hettinger166958b2003-12-01 13:18:39 +0000435\versionadded{2.4}
Raymond Hettinger984f9bb2005-03-09 16:38:48 +0000436\versionchanged[Added support for multiple item extraction]{2.5}
Raymond Hettinger166958b2003-12-01 13:18:39 +0000437\end{funcdesc}
438
439Examples:
440
441\begin{verbatim}
Raymond Hettinger984f9bb2005-03-09 16:38:48 +0000442>>> from operator import itemgetter
Raymond Hettinger166958b2003-12-01 13:18:39 +0000443>>> inventory = [('apple', 3), ('banana', 2), ('pear', 5), ('orange', 1)]
444>>> getcount = itemgetter(1)
445>>> map(getcount, inventory)
446[3, 2, 5, 1]
Raymond Hettingerb606b3d2003-12-17 20:50:46 +0000447>>> sorted(inventory, key=getcount)
Raymond Hettinger166958b2003-12-01 13:18:39 +0000448[('orange', 1), ('banana', 2), ('apple', 3), ('pear', 5)]
449\end{verbatim}
450
451
Fred Drake8c2fd492000-10-22 03:19:30 +0000452\subsection{Mapping Operators to Functions \label{operator-map}}
453
454This table shows how abstract operations correspond to operator
455symbols in the Python syntax and the functions in the
456\refmodule{operator} module.
457
458
459\begin{tableiii}{l|c|l}{textrm}{Operation}{Syntax}{Function}
460 \lineiii{Addition}{\code{\var{a} + \var{b}}}
461 {\code{add(\var{a}, \var{b})}}
462 \lineiii{Concatenation}{\code{\var{seq1} + \var{seq2}}}
463 {\code{concat(\var{seq1}, \var{seq2})}}
464 \lineiii{Containment Test}{\code{\var{o} in \var{seq}}}
465 {\code{contains(\var{seq}, \var{o})}}
466 \lineiii{Division}{\code{\var{a} / \var{b}}}
Fred Drakee89659c2001-08-10 15:55:09 +0000467 {\code{div(\var{a}, \var{b}) \#} without \code{__future__.division}}
468 \lineiii{Division}{\code{\var{a} / \var{b}}}
469 {\code{truediv(\var{a}, \var{b}) \#} with \code{__future__.division}}
470 \lineiii{Division}{\code{\var{a} // \var{b}}}
471 {\code{floordiv(\var{a}, \var{b})}}
Fred Drake8c2fd492000-10-22 03:19:30 +0000472 \lineiii{Bitwise And}{\code{\var{a} \&\ \var{b}}}
473 {\code{and_(\var{a}, \var{b})}}
474 \lineiii{Bitwise Exclusive Or}{\code{\var{a} \^\ \var{b}}}
475 {\code{xor(\var{a}, \var{b})}}
476 \lineiii{Bitwise Inversion}{\code{\~{} \var{a}}}
477 {\code{invert(\var{a})}}
478 \lineiii{Bitwise Or}{\code{\var{a} | \var{b}}}
479 {\code{or_(\var{a}, \var{b})}}
Raymond Hettinger5959c552002-08-19 03:19:09 +0000480 \lineiii{Exponentiation}{\code{\var{a} ** \var{b}}}
481 {\code{pow(\var{a}, \var{b})}}
Raymond Hettinger1b56de02003-02-21 05:42:13 +0000482 \lineiii{Identity}{\code{\var{a} is \var{b}}}
483 {\code{is_(\var{a}, \var{b})}}
484 \lineiii{Identity}{\code{\var{a} is not \var{b}}}
485 {\code{is_not(\var{a}, \var{b})}}
Fred Drake8c2fd492000-10-22 03:19:30 +0000486 \lineiii{Indexed Assignment}{\code{\var{o}[\var{k}] = \var{v}}}
487 {\code{setitem(\var{o}, \var{k}, \var{v})}}
488 \lineiii{Indexed Deletion}{\code{del \var{o}[\var{k}]}}
489 {\code{delitem(\var{o}, \var{k})}}
490 \lineiii{Indexing}{\code{\var{o}[\var{k}]}}
491 {\code{getitem(\var{o}, \var{k})}}
492 \lineiii{Left Shift}{\code{\var{a} <\code{<} \var{b}}}
493 {\code{lshift(\var{a}, \var{b})}}
494 \lineiii{Modulo}{\code{\var{a} \%\ \var{b}}}
495 {\code{mod(\var{a}, \var{b})}}
496 \lineiii{Multiplication}{\code{\var{a} * \var{b}}}
497 {\code{mul(\var{a}, \var{b})}}
498 \lineiii{Negation (Arithmetic)}{\code{- \var{a}}}
499 {\code{neg(\var{a})}}
500 \lineiii{Negation (Logical)}{\code{not \var{a}}}
501 {\code{not_(\var{a})}}
Fred Drakef25fa6d2006-05-03 02:04:40 +0000502 \lineiii{Right Shift}{\code{\var{a} >> \var{b}}}
Fred Drake8c2fd492000-10-22 03:19:30 +0000503 {\code{rshift(\var{a}, \var{b})}}
504 \lineiii{Sequence Repitition}{\code{\var{seq} * \var{i}}}
505 {\code{repeat(\var{seq}, \var{i})}}
506 \lineiii{Slice Assignment}{\code{\var{seq}[\var{i}:\var{j}]} = \var{values}}
507 {\code{setslice(\var{seq}, \var{i}, \var{j}, \var{values})}}
508 \lineiii{Slice Deletion}{\code{del \var{seq}[\var{i}:\var{j}]}}
509 {\code{delslice(\var{seq}, \var{i}, \var{j})}}
510 \lineiii{Slicing}{\code{\var{seq}[\var{i}:\var{j}]}}
511 {\code{getslice(\var{seq}, \var{i}, \var{j})}}
512 \lineiii{String Formatting}{\code{\var{s} \%\ \var{o}}}
513 {\code{mod(\var{s}, \var{o})}}
514 \lineiii{Subtraction}{\code{\var{a} - \var{b}}}
515 {\code{sub(\var{a}, \var{b})}}
516 \lineiii{Truth Test}{\code{\var{o}}}
517 {\code{truth(\var{o})}}
Fred Drakee89659c2001-08-10 15:55:09 +0000518 \lineiii{Ordering}{\code{\var{a} < \var{b}}}
519 {\code{lt(\var{a}, \var{b})}}
520 \lineiii{Ordering}{\code{\var{a} <= \var{b}}}
521 {\code{le(\var{a}, \var{b})}}
522 \lineiii{Equality}{\code{\var{a} == \var{b}}}
523 {\code{eq(\var{a}, \var{b})}}
524 \lineiii{Difference}{\code{\var{a} != \var{b}}}
525 {\code{ne(\var{a}, \var{b})}}
526 \lineiii{Ordering}{\code{\var{a} >= \var{b}}}
527 {\code{ge(\var{a}, \var{b})}}
528 \lineiii{Ordering}{\code{\var{a} > \var{b}}}
529 {\code{gt(\var{a}, \var{b})}}
Fred Drake8c2fd492000-10-22 03:19:30 +0000530\end{tableiii}