blob: 5d0ea7dfdd8928d4af75fb2758411f93654477f3 [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.
Terry Jan Reedyfa089b92016-06-11 15:02:54 -04006
Georg Brandl116aa622007-08-15 14:28:22 +00007.. sectionauthor:: Skip Montanaro <skip@automatrix.com>
8
Terry Jan Reedyfa089b92016-06-11 15:02:54 -04009**Source code:** :source:`Lib/operator.py`
Georg Brandl116aa622007-08-15 14:28:22 +000010
Christian Heimesfe337bf2008-03-23 21:54:12 +000011.. testsetup::
Georg Brandl48310cd2009-01-03 21:18:54 +000012
Christian Heimesfe337bf2008-03-23 21:54:12 +000013 import operator
Alexander Belopolsky287d1fd2011-01-12 16:37:14 +000014 from operator import itemgetter, iadd
Christian Heimesfe337bf2008-03-23 21:54:12 +000015
Raymond Hettinger3f5228d2013-05-10 19:57:44 -070016--------------
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
Sanket Dasgupta5b9299d2017-09-24 23:59:22 +053020equivalent to the expression ``x+y``. Many function names are those used for
21special methods, without the double underscores. For backward compatibility,
22many of these have a variant with the double underscores kept. The variants
23without the double underscores are preferred for clarity.
Georg Brandl116aa622007-08-15 14:28:22 +000024
25The functions fall into categories that perform object comparisons, logical
Georg Brandlb30f3302011-01-06 09:23:56 +000026operations, mathematical operations and sequence operations.
Georg Brandl116aa622007-08-15 14:28:22 +000027
28The object comparison functions are useful for all objects, and are named after
29the rich comparison operators they support:
30
31
32.. function:: lt(a, b)
33 le(a, b)
34 eq(a, b)
35 ne(a, b)
36 ge(a, b)
37 gt(a, b)
38 __lt__(a, b)
39 __le__(a, b)
40 __eq__(a, b)
41 __ne__(a, b)
42 __ge__(a, b)
43 __gt__(a, b)
44
45 Perform "rich comparisons" between *a* and *b*. Specifically, ``lt(a, b)`` is
46 equivalent to ``a < b``, ``le(a, b)`` is equivalent to ``a <= b``, ``eq(a,
47 b)`` is equivalent to ``a == b``, ``ne(a, b)`` is equivalent to ``a != b``,
48 ``gt(a, b)`` is equivalent to ``a > b`` and ``ge(a, b)`` is equivalent to ``a
Mark Dickinsonc48d8342009-02-01 14:18:10 +000049 >= b``. Note that these functions can return any value, which may
50 or may not be interpretable as a Boolean value. See
51 :ref:`comparisons` for more information about rich comparisons.
Georg Brandl116aa622007-08-15 14:28:22 +000052
Georg Brandl116aa622007-08-15 14:28:22 +000053
54The logical operations are also generally applicable to all objects, and support
55truth tests, identity tests, and boolean operations:
56
57
Thomas Wouters1b7f8912007-09-19 03:06:30 +000058.. function:: not_(obj)
59 __not__(obj)
Georg Brandl116aa622007-08-15 14:28:22 +000060
Thomas Wouters1b7f8912007-09-19 03:06:30 +000061 Return the outcome of :keyword:`not` *obj*. (Note that there is no
Georg Brandl116aa622007-08-15 14:28:22 +000062 :meth:`__not__` method for object instances; only the interpreter core defines
63 this operation. The result is affected by the :meth:`__bool__` and
64 :meth:`__len__` methods.)
65
66
Thomas Wouters1b7f8912007-09-19 03:06:30 +000067.. function:: truth(obj)
Georg Brandl116aa622007-08-15 14:28:22 +000068
Thomas Wouters1b7f8912007-09-19 03:06:30 +000069 Return :const:`True` if *obj* is true, and :const:`False` otherwise. This is
Georg Brandl116aa622007-08-15 14:28:22 +000070 equivalent to using the :class:`bool` constructor.
71
72
73.. function:: is_(a, b)
74
75 Return ``a is b``. Tests object identity.
76
Georg Brandl116aa622007-08-15 14:28:22 +000077
78.. function:: is_not(a, b)
79
80 Return ``a is not b``. Tests object identity.
81
Georg Brandl116aa622007-08-15 14:28:22 +000082
83The mathematical and bitwise operations are the most numerous:
84
85
Thomas Wouters1b7f8912007-09-19 03:06:30 +000086.. function:: abs(obj)
87 __abs__(obj)
Georg Brandl116aa622007-08-15 14:28:22 +000088
Thomas Wouters1b7f8912007-09-19 03:06:30 +000089 Return the absolute value of *obj*.
Georg Brandl116aa622007-08-15 14:28:22 +000090
91
92.. function:: add(a, b)
93 __add__(a, b)
94
95 Return ``a + b``, for *a* and *b* numbers.
96
97
98.. function:: and_(a, b)
99 __and__(a, b)
100
101 Return the bitwise and of *a* and *b*.
102
103
Georg Brandl116aa622007-08-15 14:28:22 +0000104.. function:: floordiv(a, b)
105 __floordiv__(a, b)
106
107 Return ``a // b``.
108
Georg Brandl116aa622007-08-15 14:28:22 +0000109
Benjamin Petersona0dfa822009-11-13 02:25:08 +0000110.. function:: index(a)
111 __index__(a)
112
113 Return *a* converted to an integer. Equivalent to ``a.__index__()``.
114
Benjamin Petersona0dfa822009-11-13 02:25:08 +0000115
Thomas Wouters1b7f8912007-09-19 03:06:30 +0000116.. function:: inv(obj)
117 invert(obj)
118 __inv__(obj)
119 __invert__(obj)
Georg Brandl116aa622007-08-15 14:28:22 +0000120
Thomas Wouters1b7f8912007-09-19 03:06:30 +0000121 Return the bitwise inverse of the number *obj*. This is equivalent to ``~obj``.
Georg Brandl116aa622007-08-15 14:28:22 +0000122
Georg Brandl116aa622007-08-15 14:28:22 +0000123
124.. function:: lshift(a, b)
125 __lshift__(a, b)
126
127 Return *a* shifted left by *b*.
128
129
130.. function:: mod(a, b)
131 __mod__(a, b)
132
133 Return ``a % b``.
134
135
136.. function:: mul(a, b)
137 __mul__(a, b)
138
139 Return ``a * b``, for *a* and *b* numbers.
140
141
Benjamin Petersond51374e2014-04-09 23:55:56 -0400142.. function:: matmul(a, b)
143 __matmul__(a, b)
144
145 Return ``a @ b``.
146
147 .. versionadded:: 3.5
148
149
Thomas Wouters1b7f8912007-09-19 03:06:30 +0000150.. function:: neg(obj)
151 __neg__(obj)
Georg Brandl116aa622007-08-15 14:28:22 +0000152
Benjamin Petersona0dfa822009-11-13 02:25:08 +0000153 Return *obj* negated (``-obj``).
Georg Brandl116aa622007-08-15 14:28:22 +0000154
155
156.. function:: or_(a, b)
157 __or__(a, b)
158
159 Return the bitwise or of *a* and *b*.
160
161
Thomas Wouters1b7f8912007-09-19 03:06:30 +0000162.. function:: pos(obj)
163 __pos__(obj)
Georg Brandl116aa622007-08-15 14:28:22 +0000164
Benjamin Petersona0dfa822009-11-13 02:25:08 +0000165 Return *obj* positive (``+obj``).
Georg Brandl116aa622007-08-15 14:28:22 +0000166
167
168.. function:: pow(a, b)
169 __pow__(a, b)
170
171 Return ``a ** b``, for *a* and *b* numbers.
172
Georg Brandl116aa622007-08-15 14:28:22 +0000173
174.. function:: rshift(a, b)
175 __rshift__(a, b)
176
177 Return *a* shifted right by *b*.
178
179
180.. function:: sub(a, b)
181 __sub__(a, b)
182
183 Return ``a - b``.
184
185
186.. function:: truediv(a, b)
187 __truediv__(a, b)
188
Georg Brandlf6945182008-02-01 11:56:49 +0000189 Return ``a / b`` where 2/3 is .66 rather than 0. This is also known as
190 "true" division.
Georg Brandl116aa622007-08-15 14:28:22 +0000191
Georg Brandl116aa622007-08-15 14:28:22 +0000192
193.. function:: xor(a, b)
194 __xor__(a, b)
195
196 Return the bitwise exclusive or of *a* and *b*.
197
198
Benjamin Petersona0dfa822009-11-13 02:25:08 +0000199Operations which work with sequences (some of them with mappings too) include:
Georg Brandl116aa622007-08-15 14:28:22 +0000200
201.. function:: concat(a, b)
202 __concat__(a, b)
203
204 Return ``a + b`` for *a* and *b* sequences.
205
206
207.. function:: contains(a, b)
208 __contains__(a, b)
209
210 Return the outcome of the test ``b in a``. Note the reversed operands.
211
Georg Brandl116aa622007-08-15 14:28:22 +0000212
213.. function:: countOf(a, b)
214
215 Return the number of occurrences of *b* in *a*.
216
217
218.. function:: delitem(a, b)
219 __delitem__(a, b)
220
221 Remove the value of *a* at index *b*.
222
Georg Brandl48310cd2009-01-03 21:18:54 +0000223
Georg Brandl116aa622007-08-15 14:28:22 +0000224.. function:: getitem(a, b)
225 __getitem__(a, b)
226
227 Return the value of *a* at index *b*.
228
229
Georg Brandl116aa622007-08-15 14:28:22 +0000230.. function:: indexOf(a, b)
231
232 Return the index of the first of occurrence of *b* in *a*.
233
234
Georg Brandl116aa622007-08-15 14:28:22 +0000235.. function:: setitem(a, b, c)
236 __setitem__(a, b, c)
237
238 Set the value of *a* at index *b* to *c*.
239
Georg Brandl116aa622007-08-15 14:28:22 +0000240
Armin Ronacheraa9a79d2012-10-06 14:03:24 +0200241.. function:: length_hint(obj, default=0)
242
R David Murraye8db1622014-03-10 15:00:33 -0400243 Return an estimated length for the object *o*. First try to return its
Ezio Melottie12dc282012-10-07 12:09:36 +0300244 actual length, then an estimate using :meth:`object.__length_hint__`, and
R David Murraye8db1622014-03-10 15:00:33 -0400245 finally return 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)``
Zachary Ware0bffca02013-12-18 12:21:49 -0600268 returns ``(b.name.first, b.name.last)``.
Ezio Melottibabc8222013-05-08 10:53:11 +0300269
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):
Georg Brandlf6d63472013-10-06 19:14:35 +0200281 return tuple(resolve_attr(obj, attr) for attr in items)
Benjamin Peterson2d55e2a2010-08-21 20:08:36 +0000282 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
WeizhongTuffa2c3e2018-04-13 09:33:08 +0800318 >>> itemgetter('name')({'name': 'tu', 'age': 18})
319 'tu'
Christian Heimesfe337bf2008-03-23 21:54:12 +0000320 >>> itemgetter(1)('ABCDEFG')
321 'B'
322 >>> itemgetter(1,3,5)('ABCDEFG')
323 ('B', 'D', 'F')
324 >>> itemgetter(slice(2,None))('ABCDEFG')
325 'CDEFG'
Georg Brandl116aa622007-08-15 14:28:22 +0000326
Raymond Hettinger70c2dd32017-09-07 23:53:07 -0700327 >>> soldier = dict(rank='captain', name='dotterbart')
328 >>> itemgetter('rank')(soldier)
329 'captain'
Christian Heimesdd15f6c2008-03-16 00:07:10 +0000330
331 Example of using :func:`itemgetter` to retrieve specific fields from a
Christian Heimesfe337bf2008-03-23 21:54:12 +0000332 tuple record:
Christian Heimesdd15f6c2008-03-16 00:07:10 +0000333
Benjamin Petersonc16f8b32010-08-21 20:03:15 +0000334 >>> inventory = [('apple', 3), ('banana', 2), ('pear', 5), ('orange', 1)]
335 >>> getcount = itemgetter(1)
Raymond Hettingerd292a172010-09-01 07:46:54 +0000336 >>> list(map(getcount, inventory))
Benjamin Petersonc16f8b32010-08-21 20:03:15 +0000337 [3, 2, 5, 1]
338 >>> sorted(inventory, key=getcount)
339 [('orange', 1), ('banana', 2), ('apple', 3), ('pear', 5)]
Georg Brandl116aa622007-08-15 14:28:22 +0000340
341
Christian Heimesd3eb5a152008-02-24 00:38:49 +0000342.. function:: methodcaller(name[, args...])
343
344 Return a callable object that calls the method *name* on its operand. If
345 additional arguments and/or keyword arguments are given, they will be given
Ezio Melottibabc8222013-05-08 10:53:11 +0300346 to the method as well. For example:
347
348 * After ``f = methodcaller('name')``, the call ``f(b)`` returns ``b.name()``.
349
350 * After ``f = methodcaller('name', 'foo', bar=1)``, the call ``f(b)``
351 returns ``b.name('foo', bar=1)``.
352
353 Equivalent to::
Benjamin Peterson2d55e2a2010-08-21 20:08:36 +0000354
355 def methodcaller(name, *args, **kwargs):
356 def caller(obj):
357 return getattr(obj, name)(*args, **kwargs)
358 return caller
Christian Heimesd3eb5a152008-02-24 00:38:49 +0000359
360
Georg Brandl116aa622007-08-15 14:28:22 +0000361.. _operator-map:
362
363Mapping Operators to Functions
364------------------------------
365
366This table shows how abstract operations correspond to operator symbols in the
367Python syntax and the functions in the :mod:`operator` module.
368
Benjamin Petersona0dfa822009-11-13 02:25:08 +0000369+-----------------------+-------------------------+---------------------------------------+
370| Operation | Syntax | Function |
371+=======================+=========================+=======================================+
372| Addition | ``a + b`` | ``add(a, b)`` |
373+-----------------------+-------------------------+---------------------------------------+
374| Concatenation | ``seq1 + seq2`` | ``concat(seq1, seq2)`` |
375+-----------------------+-------------------------+---------------------------------------+
376| Containment Test | ``obj in seq`` | ``contains(seq, obj)`` |
377+-----------------------+-------------------------+---------------------------------------+
Sandro Tosi83c48822012-02-28 22:28:28 +0100378| Division | ``a / b`` | ``truediv(a, b)`` |
Benjamin Petersona0dfa822009-11-13 02:25:08 +0000379+-----------------------+-------------------------+---------------------------------------+
380| Division | ``a // b`` | ``floordiv(a, b)`` |
381+-----------------------+-------------------------+---------------------------------------+
382| Bitwise And | ``a & b`` | ``and_(a, b)`` |
383+-----------------------+-------------------------+---------------------------------------+
384| Bitwise Exclusive Or | ``a ^ b`` | ``xor(a, b)`` |
385+-----------------------+-------------------------+---------------------------------------+
386| Bitwise Inversion | ``~ a`` | ``invert(a)`` |
387+-----------------------+-------------------------+---------------------------------------+
388| Bitwise Or | ``a | b`` | ``or_(a, b)`` |
389+-----------------------+-------------------------+---------------------------------------+
390| Exponentiation | ``a ** b`` | ``pow(a, b)`` |
391+-----------------------+-------------------------+---------------------------------------+
392| Identity | ``a is b`` | ``is_(a, b)`` |
393+-----------------------+-------------------------+---------------------------------------+
394| Identity | ``a is not b`` | ``is_not(a, b)`` |
395+-----------------------+-------------------------+---------------------------------------+
396| Indexed Assignment | ``obj[k] = v`` | ``setitem(obj, k, v)`` |
397+-----------------------+-------------------------+---------------------------------------+
398| Indexed Deletion | ``del obj[k]`` | ``delitem(obj, k)`` |
399+-----------------------+-------------------------+---------------------------------------+
400| Indexing | ``obj[k]`` | ``getitem(obj, k)`` |
401+-----------------------+-------------------------+---------------------------------------+
402| Left Shift | ``a << b`` | ``lshift(a, b)`` |
403+-----------------------+-------------------------+---------------------------------------+
404| Modulo | ``a % b`` | ``mod(a, b)`` |
405+-----------------------+-------------------------+---------------------------------------+
406| Multiplication | ``a * b`` | ``mul(a, b)`` |
407+-----------------------+-------------------------+---------------------------------------+
Benjamin Petersond51374e2014-04-09 23:55:56 -0400408| Matrix Multiplication | ``a @ b`` | ``matmul(a, b)`` |
409+-----------------------+-------------------------+---------------------------------------+
Benjamin Petersona0dfa822009-11-13 02:25:08 +0000410| Negation (Arithmetic) | ``- a`` | ``neg(a)`` |
411+-----------------------+-------------------------+---------------------------------------+
412| Negation (Logical) | ``not a`` | ``not_(a)`` |
413+-----------------------+-------------------------+---------------------------------------+
414| Positive | ``+ a`` | ``pos(a)`` |
415+-----------------------+-------------------------+---------------------------------------+
416| Right Shift | ``a >> b`` | ``rshift(a, b)`` |
417+-----------------------+-------------------------+---------------------------------------+
Benjamin Petersona0dfa822009-11-13 02:25:08 +0000418| Slice Assignment | ``seq[i:j] = values`` | ``setitem(seq, slice(i, j), values)`` |
419+-----------------------+-------------------------+---------------------------------------+
420| Slice Deletion | ``del seq[i:j]`` | ``delitem(seq, slice(i, j))`` |
421+-----------------------+-------------------------+---------------------------------------+
422| Slicing | ``seq[i:j]`` | ``getitem(seq, slice(i, j))`` |
423+-----------------------+-------------------------+---------------------------------------+
424| String Formatting | ``s % obj`` | ``mod(s, obj)`` |
425+-----------------------+-------------------------+---------------------------------------+
426| Subtraction | ``a - b`` | ``sub(a, b)`` |
427+-----------------------+-------------------------+---------------------------------------+
428| Truth Test | ``obj`` | ``truth(obj)`` |
429+-----------------------+-------------------------+---------------------------------------+
430| Ordering | ``a < b`` | ``lt(a, b)`` |
431+-----------------------+-------------------------+---------------------------------------+
432| Ordering | ``a <= b`` | ``le(a, b)`` |
433+-----------------------+-------------------------+---------------------------------------+
434| Equality | ``a == b`` | ``eq(a, b)`` |
435+-----------------------+-------------------------+---------------------------------------+
436| Difference | ``a != b`` | ``ne(a, b)`` |
437+-----------------------+-------------------------+---------------------------------------+
438| Ordering | ``a >= b`` | ``ge(a, b)`` |
439+-----------------------+-------------------------+---------------------------------------+
440| Ordering | ``a > b`` | ``gt(a, b)`` |
441+-----------------------+-------------------------+---------------------------------------+
Georg Brandl116aa622007-08-15 14:28:22 +0000442
Andre Delfinof4efa312019-04-08 06:14:43 -0300443In-place Operators
444------------------
Raymond Hettinger83b1ab02011-01-08 10:26:53 +0000445
446Many operations have an "in-place" version. Listed below are functions
447providing a more primitive access to in-place operators than the usual syntax
448does; for example, the :term:`statement` ``x += y`` is equivalent to
449``x = operator.iadd(x, y)``. Another way to put it is to say that
450``z = operator.iadd(x, y)`` is equivalent to the compound statement
451``z = x; z += y``.
452
453In those examples, note that when an in-place method is called, the computation
454and assignment are performed in two separate steps. The in-place functions
455listed below only do the first step, calling the in-place method. The second
456step, assignment, is not handled.
457
458For immutable targets such as strings, numbers, and tuples, the updated
459value is computed, but not assigned back to the input variable:
460
461>>> a = 'hello'
462>>> iadd(a, ' world')
463'hello world'
464>>> a
465'hello'
466
Andre Delfinof4efa312019-04-08 06:14:43 -0300467For mutable targets such as lists and dictionaries, the in-place method
Raymond Hettinger83b1ab02011-01-08 10:26:53 +0000468will perform the update, so no subsequent assignment is necessary:
469
470>>> s = ['h', 'e', 'l', 'l', 'o']
471>>> iadd(s, [' ', 'w', 'o', 'r', 'l', 'd'])
472['h', 'e', 'l', 'l', 'o', ' ', 'w', 'o', 'r', 'l', 'd']
473>>> s
474['h', 'e', 'l', 'l', 'o', ' ', 'w', 'o', 'r', 'l', 'd']
475
476.. function:: iadd(a, b)
477 __iadd__(a, b)
478
479 ``a = iadd(a, b)`` is equivalent to ``a += b``.
480
481
482.. function:: iand(a, b)
483 __iand__(a, b)
484
485 ``a = iand(a, b)`` is equivalent to ``a &= b``.
486
487
488.. function:: iconcat(a, b)
489 __iconcat__(a, b)
490
491 ``a = iconcat(a, b)`` is equivalent to ``a += b`` for *a* and *b* sequences.
492
493
494.. function:: ifloordiv(a, b)
495 __ifloordiv__(a, b)
496
497 ``a = ifloordiv(a, b)`` is equivalent to ``a //= b``.
498
499
500.. function:: ilshift(a, b)
501 __ilshift__(a, b)
502
503 ``a = ilshift(a, b)`` is equivalent to ``a <<= b``.
504
505
506.. function:: imod(a, b)
507 __imod__(a, b)
508
509 ``a = imod(a, b)`` is equivalent to ``a %= b``.
510
511
512.. function:: imul(a, b)
513 __imul__(a, b)
514
515 ``a = imul(a, b)`` is equivalent to ``a *= b``.
516
517
Benjamin Petersond51374e2014-04-09 23:55:56 -0400518.. function:: imatmul(a, b)
519 __imatmul__(a, b)
520
521 ``a = imatmul(a, b)`` is equivalent to ``a @= b``.
522
523 .. versionadded:: 3.5
524
525
Raymond Hettinger83b1ab02011-01-08 10:26:53 +0000526.. function:: ior(a, b)
527 __ior__(a, b)
528
529 ``a = ior(a, b)`` is equivalent to ``a |= b``.
530
531
532.. function:: ipow(a, b)
533 __ipow__(a, b)
534
535 ``a = ipow(a, b)`` is equivalent to ``a **= b``.
536
537
538.. function:: irshift(a, b)
539 __irshift__(a, b)
540
541 ``a = irshift(a, b)`` is equivalent to ``a >>= b``.
542
543
544.. function:: isub(a, b)
545 __isub__(a, b)
546
547 ``a = isub(a, b)`` is equivalent to ``a -= b``.
548
549
550.. function:: itruediv(a, b)
551 __itruediv__(a, b)
552
553 ``a = itruediv(a, b)`` is equivalent to ``a /= b``.
554
555
556.. function:: ixor(a, b)
557 __ixor__(a, b)
558
559 ``a = ixor(a, b)`` is equivalent to ``a ^= b``.