blob: d01d33ab71de0669e22fd0981891291d8a5d2b2f [file] [log] [blame]
Georg Brandl116aa622007-08-15 14:28:22 +00001:mod:`operator` --- Standard operators as functions
2===================================================
3
4.. module:: operator
5 :synopsis: Functions corresponding to the standard operators.
6.. sectionauthor:: Skip Montanaro <skip@automatrix.com>
7
8
Christian Heimesfe337bf2008-03-23 21:54:12 +00009.. testsetup::
Georg Brandl48310cd2009-01-03 21:18:54 +000010
Christian Heimesfe337bf2008-03-23 21:54:12 +000011 import operator
Alexander Belopolsky287d1fd2011-01-12 16:37:14 +000012 from operator import itemgetter, iadd
Christian Heimesfe337bf2008-03-23 21:54:12 +000013
Raymond Hettinger3f5228d2013-05-10 19:57:44 -070014**Source code:** :source:`Lib/operator.py`
15
16--------------
Georg Brandl116aa622007-08-15 14:28:22 +000017
Benjamin Peterson0f1e3ac2011-12-20 10:12:41 -060018The :mod:`operator` module exports a set of efficient functions corresponding to
19the intrinsic operators of Python. For example, ``operator.add(x, y)`` is
Benjamin Peterson1c92cfe2011-12-19 16:41:11 -050020equivalent to the expression ``x+y``. The function names are those used for
21special class methods; variants without leading and trailing ``__`` are also
22provided for convenience.
Georg Brandl116aa622007-08-15 14:28:22 +000023
24The functions fall into categories that perform object comparisons, logical
Georg Brandlb30f3302011-01-06 09:23:56 +000025operations, mathematical operations and sequence operations.
Georg Brandl116aa622007-08-15 14:28:22 +000026
27The object comparison functions are useful for all objects, and are named after
28the rich comparison operators they support:
29
30
31.. function:: lt(a, b)
32 le(a, b)
33 eq(a, b)
34 ne(a, b)
35 ge(a, b)
36 gt(a, b)
37 __lt__(a, b)
38 __le__(a, b)
39 __eq__(a, b)
40 __ne__(a, b)
41 __ge__(a, b)
42 __gt__(a, b)
43
44 Perform "rich comparisons" between *a* and *b*. Specifically, ``lt(a, b)`` is
45 equivalent to ``a < b``, ``le(a, b)`` is equivalent to ``a <= b``, ``eq(a,
46 b)`` is equivalent to ``a == b``, ``ne(a, b)`` is equivalent to ``a != b``,
47 ``gt(a, b)`` is equivalent to ``a > b`` and ``ge(a, b)`` is equivalent to ``a
Mark Dickinsonc48d8342009-02-01 14:18:10 +000048 >= b``. Note that these functions can return any value, which may
49 or may not be interpretable as a Boolean value. See
50 :ref:`comparisons` for more information about rich comparisons.
Georg Brandl116aa622007-08-15 14:28:22 +000051
Georg Brandl116aa622007-08-15 14:28:22 +000052
53The logical operations are also generally applicable to all objects, and support
54truth tests, identity tests, and boolean operations:
55
56
Thomas Wouters1b7f8912007-09-19 03:06:30 +000057.. function:: not_(obj)
58 __not__(obj)
Georg Brandl116aa622007-08-15 14:28:22 +000059
Thomas Wouters1b7f8912007-09-19 03:06:30 +000060 Return the outcome of :keyword:`not` *obj*. (Note that there is no
Georg Brandl116aa622007-08-15 14:28:22 +000061 :meth:`__not__` method for object instances; only the interpreter core defines
62 this operation. The result is affected by the :meth:`__bool__` and
63 :meth:`__len__` methods.)
64
65
Thomas Wouters1b7f8912007-09-19 03:06:30 +000066.. function:: truth(obj)
Georg Brandl116aa622007-08-15 14:28:22 +000067
Thomas Wouters1b7f8912007-09-19 03:06:30 +000068 Return :const:`True` if *obj* is true, and :const:`False` otherwise. This is
Georg Brandl116aa622007-08-15 14:28:22 +000069 equivalent to using the :class:`bool` constructor.
70
71
72.. function:: is_(a, b)
73
74 Return ``a is b``. Tests object identity.
75
Georg Brandl116aa622007-08-15 14:28:22 +000076
77.. function:: is_not(a, b)
78
79 Return ``a is not b``. Tests object identity.
80
Georg Brandl116aa622007-08-15 14:28:22 +000081
82The mathematical and bitwise operations are the most numerous:
83
84
Thomas Wouters1b7f8912007-09-19 03:06:30 +000085.. function:: abs(obj)
86 __abs__(obj)
Georg Brandl116aa622007-08-15 14:28:22 +000087
Thomas Wouters1b7f8912007-09-19 03:06:30 +000088 Return the absolute value of *obj*.
Georg Brandl116aa622007-08-15 14:28:22 +000089
90
91.. function:: add(a, b)
92 __add__(a, b)
93
94 Return ``a + b``, for *a* and *b* numbers.
95
96
97.. function:: and_(a, b)
98 __and__(a, b)
99
100 Return the bitwise and of *a* and *b*.
101
102
Georg Brandl116aa622007-08-15 14:28:22 +0000103.. function:: floordiv(a, b)
104 __floordiv__(a, b)
105
106 Return ``a // b``.
107
Georg Brandl116aa622007-08-15 14:28:22 +0000108
Benjamin Petersona0dfa822009-11-13 02:25:08 +0000109.. function:: index(a)
110 __index__(a)
111
112 Return *a* converted to an integer. Equivalent to ``a.__index__()``.
113
Benjamin Petersona0dfa822009-11-13 02:25:08 +0000114
Thomas Wouters1b7f8912007-09-19 03:06:30 +0000115.. function:: inv(obj)
116 invert(obj)
117 __inv__(obj)
118 __invert__(obj)
Georg Brandl116aa622007-08-15 14:28:22 +0000119
Thomas Wouters1b7f8912007-09-19 03:06:30 +0000120 Return the bitwise inverse of the number *obj*. This is equivalent to ``~obj``.
Georg Brandl116aa622007-08-15 14:28:22 +0000121
Georg Brandl116aa622007-08-15 14:28:22 +0000122
123.. function:: lshift(a, b)
124 __lshift__(a, b)
125
126 Return *a* shifted left by *b*.
127
128
129.. function:: mod(a, b)
130 __mod__(a, b)
131
132 Return ``a % b``.
133
134
135.. function:: mul(a, b)
136 __mul__(a, b)
137
138 Return ``a * b``, for *a* and *b* numbers.
139
140
Thomas Wouters1b7f8912007-09-19 03:06:30 +0000141.. function:: neg(obj)
142 __neg__(obj)
Georg Brandl116aa622007-08-15 14:28:22 +0000143
Benjamin Petersona0dfa822009-11-13 02:25:08 +0000144 Return *obj* negated (``-obj``).
Georg Brandl116aa622007-08-15 14:28:22 +0000145
146
147.. function:: or_(a, b)
148 __or__(a, b)
149
150 Return the bitwise or of *a* and *b*.
151
152
Thomas Wouters1b7f8912007-09-19 03:06:30 +0000153.. function:: pos(obj)
154 __pos__(obj)
Georg Brandl116aa622007-08-15 14:28:22 +0000155
Benjamin Petersona0dfa822009-11-13 02:25:08 +0000156 Return *obj* positive (``+obj``).
Georg Brandl116aa622007-08-15 14:28:22 +0000157
158
159.. function:: pow(a, b)
160 __pow__(a, b)
161
162 Return ``a ** b``, for *a* and *b* numbers.
163
Georg Brandl116aa622007-08-15 14:28:22 +0000164
165.. function:: rshift(a, b)
166 __rshift__(a, b)
167
168 Return *a* shifted right by *b*.
169
170
171.. function:: sub(a, b)
172 __sub__(a, b)
173
174 Return ``a - b``.
175
176
177.. function:: truediv(a, b)
178 __truediv__(a, b)
179
Georg Brandlf6945182008-02-01 11:56:49 +0000180 Return ``a / b`` where 2/3 is .66 rather than 0. This is also known as
181 "true" division.
Georg Brandl116aa622007-08-15 14:28:22 +0000182
Georg Brandl116aa622007-08-15 14:28:22 +0000183
184.. function:: xor(a, b)
185 __xor__(a, b)
186
187 Return the bitwise exclusive or of *a* and *b*.
188
189
Benjamin Petersona0dfa822009-11-13 02:25:08 +0000190Operations which work with sequences (some of them with mappings too) include:
Georg Brandl116aa622007-08-15 14:28:22 +0000191
192.. function:: concat(a, b)
193 __concat__(a, b)
194
195 Return ``a + b`` for *a* and *b* sequences.
196
197
198.. function:: contains(a, b)
199 __contains__(a, b)
200
201 Return the outcome of the test ``b in a``. Note the reversed operands.
202
Georg Brandl116aa622007-08-15 14:28:22 +0000203
204.. function:: countOf(a, b)
205
206 Return the number of occurrences of *b* in *a*.
207
208
209.. function:: delitem(a, b)
210 __delitem__(a, b)
211
212 Remove the value of *a* at index *b*.
213
Georg Brandl48310cd2009-01-03 21:18:54 +0000214
Georg Brandl116aa622007-08-15 14:28:22 +0000215.. function:: getitem(a, b)
216 __getitem__(a, b)
217
218 Return the value of *a* at index *b*.
219
220
Georg Brandl116aa622007-08-15 14:28:22 +0000221.. function:: indexOf(a, b)
222
223 Return the index of the first of occurrence of *b* in *a*.
224
225
Georg Brandl116aa622007-08-15 14:28:22 +0000226.. function:: setitem(a, b, c)
227 __setitem__(a, b, c)
228
229 Set the value of *a* at index *b* to *c*.
230
Georg Brandl116aa622007-08-15 14:28:22 +0000231Example: Build a dictionary that maps the ordinals from ``0`` to ``255`` to
Christian Heimesfe337bf2008-03-23 21:54:12 +0000232their character equivalents.
Georg Brandl116aa622007-08-15 14:28:22 +0000233
Georg Brandl116aa622007-08-15 14:28:22 +0000234 >>> d = {}
235 >>> keys = range(256)
236 >>> vals = map(chr, keys)
Christian Heimesfe337bf2008-03-23 21:54:12 +0000237 >>> map(operator.setitem, [d]*len(keys), keys, vals) # doctest: +SKIP
Georg Brandl116aa622007-08-15 14:28:22 +0000238
239.. XXX: find a better, readable, example
240
Armin Ronacheraa9a79d2012-10-06 14:03:24 +0200241.. function:: length_hint(obj, default=0)
242
243 Return an estimated length for the object *o*. First trying to return its
Ezio Melottie12dc282012-10-07 12:09:36 +0300244 actual length, then an estimate using :meth:`object.__length_hint__`, and
245 finally returning the default value.
Armin Ronacheraa9a79d2012-10-06 14:03:24 +0200246
Armin Ronacher74b38b12012-10-07 10:29:32 +0200247 .. versionadded:: 3.4
248
Georg Brandl116aa622007-08-15 14:28:22 +0000249The :mod:`operator` module also defines tools for generalized attribute and item
250lookups. These are useful for making fast field extractors as arguments for
251:func:`map`, :func:`sorted`, :meth:`itertools.groupby`, or other functions that
252expect a function argument.
253
254
Ezio Melottibabc8222013-05-08 10:53:11 +0300255.. function:: attrgetter(attr)
256 attrgetter(*attrs)
Georg Brandl116aa622007-08-15 14:28:22 +0000257
Ezio Melottibabc8222013-05-08 10:53:11 +0300258 Return a callable object that fetches *attr* from its operand.
259 If more than one attribute is requested, returns a tuple of attributes.
260 The attribute names can also contain dots. For example:
261
262 * After ``f = attrgetter('name')``, the call ``f(b)`` returns ``b.name``.
263
264 * After ``f = attrgetter('name', 'date')``, the call ``f(b)`` returns
265 ``(b.name, b.date)``.
266
267 * After ``f = attrgetter('name.first', 'name.last')``, the call ``f(b)``
268 returns ``(r.name.first, r.name.last)``.
269
270 Equivalent to::
Benjamin Peterson2d55e2a2010-08-21 20:08:36 +0000271
272 def attrgetter(*items):
Antoine Pitroue9745712010-10-31 15:26:04 +0000273 if any(not isinstance(item, str) for item in items):
274 raise TypeError('attribute name must be a string')
Benjamin Peterson2d55e2a2010-08-21 20:08:36 +0000275 if len(items) == 1:
276 attr = items[0]
277 def g(obj):
278 return resolve_attr(obj, attr)
279 else:
280 def g(obj):
281 return tuple(resolve_att(obj, attr) for attr in items)
282 return g
283
284 def resolve_attr(obj, attr):
285 for name in attr.split("."):
286 obj = getattr(obj, name)
287 return obj
288
Georg Brandl116aa622007-08-15 14:28:22 +0000289
Ezio Melottibabc8222013-05-08 10:53:11 +0300290.. function:: itemgetter(item)
291 itemgetter(*items)
Georg Brandl116aa622007-08-15 14:28:22 +0000292
Christian Heimesdd15f6c2008-03-16 00:07:10 +0000293 Return a callable object that fetches *item* from its operand using the
294 operand's :meth:`__getitem__` method. If multiple items are specified,
Ezio Melottibabc8222013-05-08 10:53:11 +0300295 returns a tuple of lookup values. For example:
296
297 * After ``f = itemgetter(2)``, the call ``f(r)`` returns ``r[2]``.
298
299 * After ``g = itemgetter(2, 5, 3)``, the call ``g(r)`` returns
300 ``(r[2], r[5], r[3])``.
301
302 Equivalent to::
Georg Brandl116aa622007-08-15 14:28:22 +0000303
Benjamin Petersonffec8102010-08-21 20:01:28 +0000304 def itemgetter(*items):
305 if len(items) == 1:
306 item = items[0]
307 def g(obj):
308 return obj[item]
309 else:
310 def g(obj):
311 return tuple(obj[item] for item in items)
312 return g
Georg Brandl48310cd2009-01-03 21:18:54 +0000313
314 The items can be any type accepted by the operand's :meth:`__getitem__`
315 method. Dictionaries accept any hashable value. Lists, tuples, and
Christian Heimesfe337bf2008-03-23 21:54:12 +0000316 strings accept an index or a slice:
Georg Brandl116aa622007-08-15 14:28:22 +0000317
Christian Heimesfe337bf2008-03-23 21:54:12 +0000318 >>> itemgetter(1)('ABCDEFG')
319 'B'
320 >>> itemgetter(1,3,5)('ABCDEFG')
321 ('B', 'D', 'F')
322 >>> itemgetter(slice(2,None))('ABCDEFG')
323 'CDEFG'
Georg Brandl116aa622007-08-15 14:28:22 +0000324
Christian Heimesdd15f6c2008-03-16 00:07:10 +0000325
326 Example of using :func:`itemgetter` to retrieve specific fields from a
Christian Heimesfe337bf2008-03-23 21:54:12 +0000327 tuple record:
Christian Heimesdd15f6c2008-03-16 00:07:10 +0000328
Benjamin Petersonc16f8b32010-08-21 20:03:15 +0000329 >>> inventory = [('apple', 3), ('banana', 2), ('pear', 5), ('orange', 1)]
330 >>> getcount = itemgetter(1)
Raymond Hettingerd292a172010-09-01 07:46:54 +0000331 >>> list(map(getcount, inventory))
Benjamin Petersonc16f8b32010-08-21 20:03:15 +0000332 [3, 2, 5, 1]
333 >>> sorted(inventory, key=getcount)
334 [('orange', 1), ('banana', 2), ('apple', 3), ('pear', 5)]
Georg Brandl116aa622007-08-15 14:28:22 +0000335
336
Christian Heimesd3eb5a152008-02-24 00:38:49 +0000337.. function:: methodcaller(name[, args...])
338
339 Return a callable object that calls the method *name* on its operand. If
340 additional arguments and/or keyword arguments are given, they will be given
Ezio Melottibabc8222013-05-08 10:53:11 +0300341 to the method as well. For example:
342
343 * After ``f = methodcaller('name')``, the call ``f(b)`` returns ``b.name()``.
344
345 * After ``f = methodcaller('name', 'foo', bar=1)``, the call ``f(b)``
346 returns ``b.name('foo', bar=1)``.
347
348 Equivalent to::
Benjamin Peterson2d55e2a2010-08-21 20:08:36 +0000349
350 def methodcaller(name, *args, **kwargs):
351 def caller(obj):
352 return getattr(obj, name)(*args, **kwargs)
353 return caller
Christian Heimesd3eb5a152008-02-24 00:38:49 +0000354
355
Georg Brandl116aa622007-08-15 14:28:22 +0000356.. _operator-map:
357
358Mapping Operators to Functions
359------------------------------
360
361This table shows how abstract operations correspond to operator symbols in the
362Python syntax and the functions in the :mod:`operator` module.
363
Benjamin Petersona0dfa822009-11-13 02:25:08 +0000364+-----------------------+-------------------------+---------------------------------------+
365| Operation | Syntax | Function |
366+=======================+=========================+=======================================+
367| Addition | ``a + b`` | ``add(a, b)`` |
368+-----------------------+-------------------------+---------------------------------------+
369| Concatenation | ``seq1 + seq2`` | ``concat(seq1, seq2)`` |
370+-----------------------+-------------------------+---------------------------------------+
371| Containment Test | ``obj in seq`` | ``contains(seq, obj)`` |
372+-----------------------+-------------------------+---------------------------------------+
Sandro Tosi83c48822012-02-28 22:28:28 +0100373| Division | ``a / b`` | ``truediv(a, b)`` |
Benjamin Petersona0dfa822009-11-13 02:25:08 +0000374+-----------------------+-------------------------+---------------------------------------+
375| Division | ``a // b`` | ``floordiv(a, b)`` |
376+-----------------------+-------------------------+---------------------------------------+
377| Bitwise And | ``a & b`` | ``and_(a, b)`` |
378+-----------------------+-------------------------+---------------------------------------+
379| Bitwise Exclusive Or | ``a ^ b`` | ``xor(a, b)`` |
380+-----------------------+-------------------------+---------------------------------------+
381| Bitwise Inversion | ``~ a`` | ``invert(a)`` |
382+-----------------------+-------------------------+---------------------------------------+
383| Bitwise Or | ``a | b`` | ``or_(a, b)`` |
384+-----------------------+-------------------------+---------------------------------------+
385| Exponentiation | ``a ** b`` | ``pow(a, b)`` |
386+-----------------------+-------------------------+---------------------------------------+
387| Identity | ``a is b`` | ``is_(a, b)`` |
388+-----------------------+-------------------------+---------------------------------------+
389| Identity | ``a is not b`` | ``is_not(a, b)`` |
390+-----------------------+-------------------------+---------------------------------------+
391| Indexed Assignment | ``obj[k] = v`` | ``setitem(obj, k, v)`` |
392+-----------------------+-------------------------+---------------------------------------+
393| Indexed Deletion | ``del obj[k]`` | ``delitem(obj, k)`` |
394+-----------------------+-------------------------+---------------------------------------+
395| Indexing | ``obj[k]`` | ``getitem(obj, k)`` |
396+-----------------------+-------------------------+---------------------------------------+
397| Left Shift | ``a << b`` | ``lshift(a, b)`` |
398+-----------------------+-------------------------+---------------------------------------+
399| Modulo | ``a % b`` | ``mod(a, b)`` |
400+-----------------------+-------------------------+---------------------------------------+
401| Multiplication | ``a * b`` | ``mul(a, b)`` |
402+-----------------------+-------------------------+---------------------------------------+
403| Negation (Arithmetic) | ``- a`` | ``neg(a)`` |
404+-----------------------+-------------------------+---------------------------------------+
405| Negation (Logical) | ``not a`` | ``not_(a)`` |
406+-----------------------+-------------------------+---------------------------------------+
407| Positive | ``+ a`` | ``pos(a)`` |
408+-----------------------+-------------------------+---------------------------------------+
409| Right Shift | ``a >> b`` | ``rshift(a, b)`` |
410+-----------------------+-------------------------+---------------------------------------+
Benjamin Petersona0dfa822009-11-13 02:25:08 +0000411| Slice Assignment | ``seq[i:j] = values`` | ``setitem(seq, slice(i, j), values)`` |
412+-----------------------+-------------------------+---------------------------------------+
413| Slice Deletion | ``del seq[i:j]`` | ``delitem(seq, slice(i, j))`` |
414+-----------------------+-------------------------+---------------------------------------+
415| Slicing | ``seq[i:j]`` | ``getitem(seq, slice(i, j))`` |
416+-----------------------+-------------------------+---------------------------------------+
417| String Formatting | ``s % obj`` | ``mod(s, obj)`` |
418+-----------------------+-------------------------+---------------------------------------+
419| Subtraction | ``a - b`` | ``sub(a, b)`` |
420+-----------------------+-------------------------+---------------------------------------+
421| Truth Test | ``obj`` | ``truth(obj)`` |
422+-----------------------+-------------------------+---------------------------------------+
423| Ordering | ``a < b`` | ``lt(a, b)`` |
424+-----------------------+-------------------------+---------------------------------------+
425| Ordering | ``a <= b`` | ``le(a, b)`` |
426+-----------------------+-------------------------+---------------------------------------+
427| Equality | ``a == b`` | ``eq(a, b)`` |
428+-----------------------+-------------------------+---------------------------------------+
429| Difference | ``a != b`` | ``ne(a, b)`` |
430+-----------------------+-------------------------+---------------------------------------+
431| Ordering | ``a >= b`` | ``ge(a, b)`` |
432+-----------------------+-------------------------+---------------------------------------+
433| Ordering | ``a > b`` | ``gt(a, b)`` |
434+-----------------------+-------------------------+---------------------------------------+
Georg Brandl116aa622007-08-15 14:28:22 +0000435
Raymond Hettinger83b1ab02011-01-08 10:26:53 +0000436Inplace Operators
Sandro Tosi3f7d1d32012-06-01 20:23:20 +0200437-----------------
Raymond Hettinger83b1ab02011-01-08 10:26:53 +0000438
439Many operations have an "in-place" version. Listed below are functions
440providing a more primitive access to in-place operators than the usual syntax
441does; for example, the :term:`statement` ``x += y`` is equivalent to
442``x = operator.iadd(x, y)``. Another way to put it is to say that
443``z = operator.iadd(x, y)`` is equivalent to the compound statement
444``z = x; z += y``.
445
446In those examples, note that when an in-place method is called, the computation
447and assignment are performed in two separate steps. The in-place functions
448listed below only do the first step, calling the in-place method. The second
449step, assignment, is not handled.
450
451For immutable targets such as strings, numbers, and tuples, the updated
452value is computed, but not assigned back to the input variable:
453
454>>> a = 'hello'
455>>> iadd(a, ' world')
456'hello world'
457>>> a
458'hello'
459
460For mutable targets such as lists and dictionaries, the inplace method
461will perform the update, so no subsequent assignment is necessary:
462
463>>> s = ['h', 'e', 'l', 'l', 'o']
464>>> iadd(s, [' ', 'w', 'o', 'r', 'l', 'd'])
465['h', 'e', 'l', 'l', 'o', ' ', 'w', 'o', 'r', 'l', 'd']
466>>> s
467['h', 'e', 'l', 'l', 'o', ' ', 'w', 'o', 'r', 'l', 'd']
468
469.. function:: iadd(a, b)
470 __iadd__(a, b)
471
472 ``a = iadd(a, b)`` is equivalent to ``a += b``.
473
474
475.. function:: iand(a, b)
476 __iand__(a, b)
477
478 ``a = iand(a, b)`` is equivalent to ``a &= b``.
479
480
481.. function:: iconcat(a, b)
482 __iconcat__(a, b)
483
484 ``a = iconcat(a, b)`` is equivalent to ``a += b`` for *a* and *b* sequences.
485
486
487.. function:: ifloordiv(a, b)
488 __ifloordiv__(a, b)
489
490 ``a = ifloordiv(a, b)`` is equivalent to ``a //= b``.
491
492
493.. function:: ilshift(a, b)
494 __ilshift__(a, b)
495
496 ``a = ilshift(a, b)`` is equivalent to ``a <<= b``.
497
498
499.. function:: imod(a, b)
500 __imod__(a, b)
501
502 ``a = imod(a, b)`` is equivalent to ``a %= b``.
503
504
505.. function:: imul(a, b)
506 __imul__(a, b)
507
508 ``a = imul(a, b)`` is equivalent to ``a *= b``.
509
510
511.. function:: ior(a, b)
512 __ior__(a, b)
513
514 ``a = ior(a, b)`` is equivalent to ``a |= b``.
515
516
517.. function:: ipow(a, b)
518 __ipow__(a, b)
519
520 ``a = ipow(a, b)`` is equivalent to ``a **= b``.
521
522
523.. function:: irshift(a, b)
524 __irshift__(a, b)
525
526 ``a = irshift(a, b)`` is equivalent to ``a >>= b``.
527
528
529.. function:: isub(a, b)
530 __isub__(a, b)
531
532 ``a = isub(a, b)`` is equivalent to ``a -= b``.
533
534
535.. function:: itruediv(a, b)
536 __itruediv__(a, b)
537
538 ``a = itruediv(a, b)`` is equivalent to ``a /= b``.
539
540
541.. function:: ixor(a, b)
542 __ixor__(a, b)
543
544 ``a = ixor(a, b)`` is equivalent to ``a ^= b``.