1.. XXX document all delegations to __special__ methods
2.. _built-in-funcs:
3
4Built-in Functions
5==================
6
7The Python interpreter has a number of functions and types built into it that
8are always available.  They are listed here in alphabetical order.
9
10+---------------------------------------------------------------------------------------------------+
11|                                        Built-in Functions                                         |
12+=========================+=======================+=======================+=========================+
13| |  **A**                | |  **E**              | |  **L**              | |  **R**                |
14| |  :func:`abs`          | |  :func:`enumerate`  | |  :func:`len`        | |  |func-range|_        |
15| |  :func:`aiter`        | |  :func:`eval`       | |  |func-list|_       | |  :func:`repr`         |
16| |  :func:`all`          | |  :func:`exec`       | |  :func:`locals`     | |  :func:`reversed`     |
17| |  :func:`any`          | |                     | |                     | |  :func:`round`        |
18| |  :func:`anext`        | |  **F**              | |  **M**              | |                       |
19| |  :func:`ascii`        | |  :func:`filter`     | |  :func:`map`        | |  **S**                |
20| |                       | |  :func:`float`      | |  :func:`max`        | |  |func-set|_          |
21| |  **B**                | |  :func:`format`     | |  |func-memoryview|_ | |  :func:`setattr`      |
22| |  :func:`bin`          | |  |func-frozenset|_  | |  :func:`min`        | |  :func:`slice`        |
23| |  :func:`bool`         | |                     | |                     | |  :func:`sorted`       |
24| |  :func:`breakpoint`   | |  **G**              | |  **N**              | |  :func:`staticmethod` |
25| |  |func-bytearray|_    | |  :func:`getattr`    | |  :func:`next`       | |  |func-str|_          |
26| |  |func-bytes|_        | |  :func:`globals`    | |                     | |  :func:`sum`          |
27| |                       | |                     | |  **O**              | |  :func:`super`        |
28| |  **C**                | |  **H**              | |  :func:`object`     | |                       |
29| |  :func:`callable`     | |  :func:`hasattr`    | |  :func:`oct`        | |  **T**                |
30| |  :func:`chr`          | |  :func:`hash`       | |  :func:`open`       | |  |func-tuple|_        |
31| |  :func:`classmethod`  | |  :func:`help`       | |  :func:`ord`        | |  :func:`type`         |
32| |  :func:`compile`      | |  :func:`hex`        | |                     | |                       |
33| |  :func:`complex`      | |                     | |  **P**              | |  **V**                |
34| |                       | |  **I**              | |  :func:`pow`        | |  :func:`vars`         |
35| |  **D**                | |  :func:`id`         | |  :func:`print`      | |                       |
36| |  :func:`delattr`      | |  :func:`input`      | |  :func:`property`   | |  **Z**                |
37| |  |func-dict|_         | |  :func:`int`        | |                     | |  :func:`zip`          |
38| |  :func:`dir`          | |  :func:`isinstance` | |                     | |                       |
39| |  :func:`divmod`       | |  :func:`issubclass` | |                     | |  **_**                |
40| |                       | |  :func:`iter`       | |                     | |  :func:`__import__`   |
41+-------------------------+-----------------------+-----------------------+-------------------------+
42
43.. using :func:`dict` would create a link to another page, so local targets are
44   used, with replacement texts to make the output in the table consistent
45
46.. |func-dict| replace:: ``dict()``
47.. |func-frozenset| replace:: ``frozenset()``
48.. |func-memoryview| replace:: ``memoryview()``
49.. |func-set| replace:: ``set()``
50.. |func-list| replace:: ``list()``
51.. |func-str| replace:: ``str()``
52.. |func-tuple| replace:: ``tuple()``
53.. |func-range| replace:: ``range()``
54.. |func-bytearray| replace:: ``bytearray()``
55.. |func-bytes| replace:: ``bytes()``
56
57.. function:: abs(x)
58
59   Return the absolute value of a number.  The argument may be an
60   integer, a floating point number, or an object implementing :meth:`__abs__`.
61   If the argument is a complex number, its magnitude is returned.
62
63
64.. function:: aiter(async_iterable)
65
66   Return an :term:`asynchronous iterator` for an :term:`asynchronous iterable`.
67   Equivalent to calling ``x.__aiter__()``.
68
69   Note: Unlike :func:`iter`, :func:`aiter` has no 2-argument variant.
70
71   .. versionadded:: 3.10
72
73.. function:: all(iterable)
74
75   Return ``True`` if all elements of the *iterable* are true (or if the iterable
76   is empty).  Equivalent to::
77
78      def all(iterable):
79          for element in iterable:
80              if not element:
81                  return False
82          return True
83
84
85.. awaitablefunction:: anext(async_iterator)
86                       anext(async_iterator, default)
87
88   When awaited, return the next item from the given :term:`asynchronous
89   iterator`, or *default* if given and the iterator is exhausted.
90
91   This is the async variant of the :func:`next` builtin, and behaves
92   similarly.
93
94   This calls the :meth:`~object.__anext__` method of *async_iterator*,
95   returning an :term:`awaitable`. Awaiting this returns the next value of the
96   iterator. If *default* is given, it is returned if the iterator is exhausted,
97   otherwise :exc:`StopAsyncIteration` is raised.
98
99   .. versionadded:: 3.10
100
101.. function:: any(iterable)
102
103   Return ``True`` if any element of the *iterable* is true.  If the iterable
104   is empty, return ``False``.  Equivalent to::
105
106      def any(iterable):
107          for element in iterable:
108              if element:
109                  return True
110          return False
111
112
113.. function:: ascii(object)
114
115   As :func:`repr`, return a string containing a printable representation of an
116   object, but escape the non-ASCII characters in the string returned by
117   :func:`repr` using ``\x``, ``\u``, or ``\U`` escapes.  This generates a string
118   similar to that returned by :func:`repr` in Python 2.
119
120
121.. function:: bin(x)
122
123   Convert an integer number to a binary string prefixed with "0b". The result
124   is a valid Python expression. If *x* is not a Python :class:`int` object, it
125   has to define an :meth:`__index__` method that returns an integer. Some
126   examples:
127
128      >>> bin(3)
129      '0b11'
130      >>> bin(-10)
131      '-0b1010'
132
133   If the prefix "0b" is desired or not, you can use either of the following ways.
134
135      >>> format(14, '#b'), format(14, 'b')
136      ('0b1110', '1110')
137      >>> f'{14:#b}', f'{14:b}'
138      ('0b1110', '1110')
139
140   See also :func:`format` for more information.
141
142
143.. class:: bool(x=False)
144
145   Return a Boolean value, i.e. one of ``True`` or ``False``.  *x* is converted
146   using the standard :ref:`truth testing procedure <truth>`.  If *x* is false
147   or omitted, this returns ``False``; otherwise, it returns ``True``.  The
148   :class:`bool` class is a subclass of :class:`int` (see :ref:`typesnumeric`).
149   It cannot be subclassed further.  Its only instances are ``False`` and
150   ``True`` (see :ref:`bltin-boolean-values`).
151
152   .. index:: pair: Boolean; type
153
154   .. versionchanged:: 3.7
155      *x* is now a positional-only parameter.
156
157.. function:: breakpoint(*args, **kws)
158
159   This function drops you into the debugger at the call site.  Specifically,
160   it calls :func:`sys.breakpointhook`, passing ``args`` and ``kws`` straight
161   through.  By default, ``sys.breakpointhook()`` calls
162   :func:`pdb.set_trace()` expecting no arguments.  In this case, it is
163   purely a convenience function so you don't have to explicitly import
164   :mod:`pdb` or type as much code to enter the debugger.  However,
165   :func:`sys.breakpointhook` can be set to some other function and
166   :func:`breakpoint` will automatically call that, allowing you to drop into
167   the debugger of choice.
168   If :func:`sys.breakpointhook` is not accessible, this function will
169   raise :exc:`RuntimeError`.
170
171   By default, the behavior of :func:`breakpoint` can be changed with
172   the :envvar:`PYTHONBREAKPOINT` environment variable.
173   See :func:`sys.breakpointhook` for usage details.
174
175   Note that this is not guaranteed if :func:`sys.breakpointhook`
176   has been replaced.
177
178   .. audit-event:: builtins.breakpoint breakpointhook breakpoint
179
180   .. versionadded:: 3.7
181
182.. _func-bytearray:
183.. class:: bytearray(source=b'')
184           bytearray(source, encoding)
185           bytearray(source, encoding, errors)
186   :noindex:
187
188   Return a new array of bytes.  The :class:`bytearray` class is a mutable
189   sequence of integers in the range 0 <= x < 256.  It has most of the usual
190   methods of mutable sequences, described in :ref:`typesseq-mutable`, as well
191   as most methods that the :class:`bytes` type has, see :ref:`bytes-methods`.
192
193   The optional *source* parameter can be used to initialize the array in a few
194   different ways:
195
196   * If it is a *string*, you must also give the *encoding* (and optionally,
197     *errors*) parameters; :func:`bytearray` then converts the string to
198     bytes using :meth:`str.encode`.
199
200   * If it is an *integer*, the array will have that size and will be
201     initialized with null bytes.
202
203   * If it is an object conforming to the :ref:`buffer interface <bufferobjects>`,
204     a read-only buffer of the object will be used to initialize the bytes array.
205
206   * If it is an *iterable*, it must be an iterable of integers in the range
207     ``0 <= x < 256``, which are used as the initial contents of the array.
208
209   Without an argument, an array of size 0 is created.
210
211   See also :ref:`binaryseq` and :ref:`typebytearray`.
212
213
214.. _func-bytes:
215.. class:: bytes(source=b'')
216           bytes(source, encoding)
217           bytes(source, encoding, errors)
218   :noindex:
219
220   Return a new "bytes" object which is an immutable sequence of integers in
221   the range ``0 <= x < 256``.  :class:`bytes` is an immutable version of
222   :class:`bytearray` -- it has the same non-mutating methods and the same
223   indexing and slicing behavior.
224
225   Accordingly, constructor arguments are interpreted as for :func:`bytearray`.
226
227   Bytes objects can also be created with literals, see :ref:`strings`.
228
229   See also :ref:`binaryseq`, :ref:`typebytes`, and :ref:`bytes-methods`.
230
231
232.. function:: callable(object)
233
234   Return :const:`True` if the *object* argument appears callable,
235   :const:`False` if not.  If this returns ``True``, it is still possible that a
236   call fails, but if it is ``False``, calling *object* will never succeed.
237   Note that classes are callable (calling a class returns a new instance);
238   instances are callable if their class has a :meth:`__call__` method.
239
240   .. versionadded:: 3.2
241      This function was first removed in Python 3.0 and then brought back
242      in Python 3.2.
243
244
245.. function:: chr(i)
246
247   Return the string representing a character whose Unicode code point is the
248   integer *i*.  For example, ``chr(97)`` returns the string ``'a'``, while
249   ``chr(8364)`` returns the string ``'€'``. This is the inverse of :func:`ord`.
250
251   The valid range for the argument is from 0 through 1,114,111 (0x10FFFF in
252   base 16).  :exc:`ValueError` will be raised if *i* is outside that range.
253
254
255.. decorator:: classmethod
256
257   Transform a method into a class method.
258
259   A class method receives the class as an implicit first argument, just like an
260   instance method receives the instance. To declare a class method, use this
261   idiom::
262
263      class C:
264          @classmethod
265          def f(cls, arg1, arg2): ...
266
267   The ``@classmethod`` form is a function :term:`decorator` -- see
268   :ref:`function` for details.
269
270   A class method can be called either on the class (such as ``C.f()``) or on an instance (such
271   as ``C().f()``).  The instance is ignored except for its class. If a class
272   method is called for a derived class, the derived class object is passed as the
273   implied first argument.
274
275   Class methods are different than C++ or Java static methods. If you want those,
276   see :func:`staticmethod` in this section.
277   For more information on class methods, see :ref:`types`.
278
279   .. versionchanged:: 3.9
280      Class methods can now wrap other :term:`descriptors <descriptor>` such as
281      :func:`property`.
282
283   .. versionchanged:: 3.10
284      Class methods now inherit the method attributes (``__module__``,
285      ``__name__``, ``__qualname__``, ``__doc__`` and ``__annotations__``) and
286      have a new ``__wrapped__`` attribute.
287
288   .. versionchanged:: 3.11
289      Class methods can no longer wrap other :term:`descriptors <descriptor>` such as
290      :func:`property`.
291
292
293.. function:: compile(source, filename, mode, flags=0, dont_inherit=False, optimize=-1)
294
295   Compile the *source* into a code or AST object.  Code objects can be executed
296   by :func:`exec` or :func:`eval`.  *source* can either be a normal string, a
297   byte string, or an AST object.  Refer to the :mod:`ast` module documentation
298   for information on how to work with AST objects.
299
300   The *filename* argument should give the file from which the code was read;
301   pass some recognizable value if it wasn't read from a file (``'<string>'`` is
302   commonly used).
303
304   The *mode* argument specifies what kind of code must be compiled; it can be
305   ``'exec'`` if *source* consists of a sequence of statements, ``'eval'`` if it
306   consists of a single expression, or ``'single'`` if it consists of a single
307   interactive statement (in the latter case, expression statements that
308   evaluate to something other than ``None`` will be printed).
309
310   The optional arguments *flags* and *dont_inherit* control which
311   :ref:`compiler options <ast-compiler-flags>` should be activated
312   and which :ref:`future features <future>` should be allowed. If neither
313   is present (or both are zero) the code is compiled with the same flags that
314   affect the code that is calling :func:`compile`. If the *flags*
315   argument is given and *dont_inherit* is not (or is zero) then the compiler
316   options and the future statements specified by the *flags* argument are used
317   in addition to those that would be used anyway. If *dont_inherit* is a
318   non-zero integer then the *flags* argument is it -- the flags (future
319   features and compiler options) in the surrounding code are ignored.
320
321   Compiler options and future statements are specified by bits which can be
322   bitwise ORed together to specify multiple options. The bitfield required to
323   specify a given future feature can be found as the
324   :attr:`~__future__._Feature.compiler_flag` attribute on the
325   :class:`~__future__._Feature` instance in the :mod:`__future__` module.
326   :ref:`Compiler flags <ast-compiler-flags>` can be found in :mod:`ast`
327   module, with ``PyCF_`` prefix.
328
329   The argument *optimize* specifies the optimization level of the compiler; the
330   default value of ``-1`` selects the optimization level of the interpreter as
331   given by :option:`-O` options.  Explicit levels are ``0`` (no optimization;
332   ``__debug__`` is true), ``1`` (asserts are removed, ``__debug__`` is false)
333   or ``2`` (docstrings are removed too).
334
335   This function raises :exc:`SyntaxError` if the compiled source is invalid,
336   and :exc:`ValueError` if the source contains null bytes.
337
338   If you want to parse Python code into its AST representation, see
339   :func:`ast.parse`.
340
341   .. audit-event:: compile source,filename compile
342
343      Raises an :ref:`auditing event <auditing>` ``compile`` with arguments
344      ``source`` and ``filename``. This event may also be raised by implicit
345      compilation.
346
347   .. note::
348
349      When compiling a string with multi-line code in ``'single'`` or
350      ``'eval'`` mode, input must be terminated by at least one newline
351      character.  This is to facilitate detection of incomplete and complete
352      statements in the :mod:`code` module.
353
354   .. warning::
355
356      It is possible to crash the Python interpreter with a
357      sufficiently large/complex string when compiling to an AST
358      object due to stack depth limitations in Python's AST compiler.
359
360   .. versionchanged:: 3.2
361      Allowed use of Windows and Mac newlines.  Also, input in ``'exec'`` mode
362      does not have to end in a newline anymore.  Added the *optimize* parameter.
363
364   .. versionchanged:: 3.5
365      Previously, :exc:`TypeError` was raised when null bytes were encountered
366      in *source*.
367
368   .. versionadded:: 3.8
369      ``ast.PyCF_ALLOW_TOP_LEVEL_AWAIT`` can now be passed in flags to enable
370      support for top-level ``await``, ``async for``, and ``async with``.
371
372
373.. class:: complex(real=0, imag=0)
374           complex(string)
375
376   Return a complex number with the value *real* + *imag*\*1j or convert a string
377   or number to a complex number.  If the first parameter is a string, it will
378   be interpreted as a complex number and the function must be called without a
379   second parameter.  The second parameter can never be a string. Each argument
380   may be any numeric type (including complex).  If *imag* is omitted, it
381   defaults to zero and the constructor serves as a numeric conversion like
382   :class:`int` and :class:`float`.  If both arguments are omitted, returns
383   ``0j``.
384
385   For a general Python object ``x``, ``complex(x)`` delegates to
386   ``x.__complex__()``.  If ``__complex__()`` is not defined then it falls back
387   to :meth:`__float__`.  If ``__float__()`` is not defined then it falls back
388   to :meth:`__index__`.
389
390   .. note::
391
392      When converting from a string, the string must not contain whitespace
393      around the central ``+`` or ``-`` operator.  For example,
394      ``complex('1+2j')`` is fine, but ``complex('1 + 2j')`` raises
395      :exc:`ValueError`.
396
397   The complex type is described in :ref:`typesnumeric`.
398
399   .. versionchanged:: 3.6
400      Grouping digits with underscores as in code literals is allowed.
401
402   .. versionchanged:: 3.8
403      Falls back to :meth:`__index__` if :meth:`__complex__` and
404      :meth:`__float__` are not defined.
405
406
407.. function:: delattr(object, name)
408
409   This is a relative of :func:`setattr`.  The arguments are an object and a
410   string.  The string must be the name of one of the object's attributes.  The
411   function deletes the named attribute, provided the object allows it.  For
412   example, ``delattr(x, 'foobar')`` is equivalent to ``del x.foobar``.
413   *name* need not be a Python identifier (see :func:`setattr`).
414
415
416.. _func-dict:
417.. class:: dict(**kwarg)
418           dict(mapping, **kwarg)
419           dict(iterable, **kwarg)
420   :noindex:
421
422   Create a new dictionary.  The :class:`dict` object is the dictionary class.
423   See :class:`dict` and :ref:`typesmapping` for documentation about this class.
424
425   For other containers see the built-in :class:`list`, :class:`set`, and
426   :class:`tuple` classes, as well as the :mod:`collections` module.
427
428
429.. function:: dir()
430              dir(object)
431
432   Without arguments, return the list of names in the current local scope.  With an
433   argument, attempt to return a list of valid attributes for that object.
434
435   If the object has a method named :meth:`__dir__`, this method will be called and
436   must return the list of attributes. This allows objects that implement a custom
437   :func:`__getattr__` or :func:`__getattribute__` function to customize the way
438   :func:`dir` reports their attributes.
439
440   If the object does not provide :meth:`__dir__`, the function tries its best to
441   gather information from the object's :attr:`~object.__dict__` attribute, if defined, and
442   from its type object.  The resulting list is not necessarily complete and may
443   be inaccurate when the object has a custom :func:`__getattr__`.
444
445   The default :func:`dir` mechanism behaves differently with different types of
446   objects, as it attempts to produce the most relevant, rather than complete,
447   information:
448
449   * If the object is a module object, the list contains the names of the module's
450     attributes.
451
452   * If the object is a type or class object, the list contains the names of its
453     attributes, and recursively of the attributes of its bases.
454
455   * Otherwise, the list contains the object's attributes' names, the names of its
456     class's attributes, and recursively of the attributes of its class's base
457     classes.
458
459   The resulting list is sorted alphabetically.  For example:
460
461      >>> import struct
462      >>> dir()   # show the names in the module namespace  # doctest: +SKIP
463      ['__builtins__', '__name__', 'struct']
464      >>> dir(struct)   # show the names in the struct module # doctest: +SKIP
465      ['Struct', '__all__', '__builtins__', '__cached__', '__doc__', '__file__',
466       '__initializing__', '__loader__', '__name__', '__package__',
467       '_clearcache', 'calcsize', 'error', 'pack', 'pack_into',
468       'unpack', 'unpack_from']
469      >>> class Shape:
470      ...     def __dir__(self):
471      ...         return ['area', 'perimeter', 'location']
472      >>> s = Shape()
473      >>> dir(s)
474      ['area', 'location', 'perimeter']
475
476   .. note::
477
478      Because :func:`dir` is supplied primarily as a convenience for use at an
479      interactive prompt, it tries to supply an interesting set of names more
480      than it tries to supply a rigorously or consistently defined set of names,
481      and its detailed behavior may change across releases.  For example,
482      metaclass attributes are not in the result list when the argument is a
483      class.
484
485
486.. function:: divmod(a, b)
487
488   Take two (non-complex) numbers as arguments and return a pair of numbers
489   consisting of their quotient and remainder when using integer division.  With
490   mixed operand types, the rules for binary arithmetic operators apply.  For
491   integers, the result is the same as ``(a // b, a % b)``. For floating point
492   numbers the result is ``(q, a % b)``, where *q* is usually ``math.floor(a /
493   b)`` but may be 1 less than that.  In any case ``q * b + a % b`` is very
494   close to *a*, if ``a % b`` is non-zero it has the same sign as *b*, and ``0
495   <= abs(a % b) < abs(b)``.
496
497
498.. function:: enumerate(iterable, start=0)
499
500   Return an enumerate object. *iterable* must be a sequence, an
501   :term:`iterator`, or some other object which supports iteration.
502   The :meth:`~iterator.__next__` method of the iterator returned by
503   :func:`enumerate` returns a tuple containing a count (from *start* which
504   defaults to 0) and the values obtained from iterating over *iterable*.
505
506      >>> seasons = ['Spring', 'Summer', 'Fall', 'Winter']
507      >>> list(enumerate(seasons))
508      [(0, 'Spring'), (1, 'Summer'), (2, 'Fall'), (3, 'Winter')]
509      >>> list(enumerate(seasons, start=1))
510      [(1, 'Spring'), (2, 'Summer'), (3, 'Fall'), (4, 'Winter')]
511
512   Equivalent to::
513
514      def enumerate(iterable, start=0):
515          n = start
516          for elem in iterable:
517              yield n, elem
518              n += 1
519
520.. _func-eval:
521
522.. function:: eval(expression, globals=None, locals=None)
523
524   The arguments are a string and optional globals and locals.  If provided,
525   *globals* must be a dictionary.  If provided, *locals* can be any mapping
526   object.
527
528   The *expression* argument is parsed and evaluated as a Python expression
529   (technically speaking, a condition list) using the *globals* and *locals*
530   dictionaries as global and local namespace.  If the *globals* dictionary is
531   present and does not contain a value for the key ``__builtins__``, a
532   reference to the dictionary of the built-in module :mod:`builtins` is
533   inserted under that key before *expression* is parsed.  That way you can
534   control what builtins are available to the executed code by inserting your
535   own ``__builtins__`` dictionary into *globals* before passing it to
536   :func:`eval`.  If the *locals* dictionary is omitted it defaults to the
537   *globals* dictionary.  If both dictionaries are omitted, the expression is
538   executed with the *globals* and *locals* in the environment where
539   :func:`eval` is called.  Note, *eval()* does not have access to the
540   :term:`nested scopes <nested scope>` (non-locals) in the enclosing
541   environment.
542
543   The return value is the result of
544   the evaluated expression. Syntax errors are reported as exceptions.  Example:
545
546      >>> x = 1
547      >>> eval('x+1')
548      2
549
550   This function can also be used to execute arbitrary code objects (such as
551   those created by :func:`compile`).  In this case, pass a code object instead
552   of a string.  If the code object has been compiled with ``'exec'`` as the
553   *mode* argument, :func:`eval`\'s return value will be ``None``.
554
555   Hints: dynamic execution of statements is supported by the :func:`exec`
556   function.  The :func:`globals` and :func:`locals` functions
557   return the current global and local dictionary, respectively, which may be
558   useful to pass around for use by :func:`eval` or :func:`exec`.
559
560   If the given source is a string, then leading and trailing spaces and tabs
561   are stripped.
562
563   See :func:`ast.literal_eval` for a function that can safely evaluate strings
564   with expressions containing only literals.
565
566   .. audit-event:: exec code_object eval
567
568      Raises an :ref:`auditing event <auditing>` ``exec`` with the code object
569      as the argument. Code compilation events may also be raised.
570
571.. index:: pair: built-in function; exec
572
573.. function:: exec(object, globals=None, locals=None, /, *, closure=None)
574
575   This function supports dynamic execution of Python code. *object* must be
576   either a string or a code object.  If it is a string, the string is parsed as
577   a suite of Python statements which is then executed (unless a syntax error
578   occurs). [#]_ If it is a code object, it is simply executed.  In all cases,
579   the code that's executed is expected to be valid as file input (see the
580   section :ref:`file-input` in the Reference Manual). Be aware that the
581   :keyword:`nonlocal`, :keyword:`yield`,  and :keyword:`return`
582   statements may not be used outside of
583   function definitions even within the context of code passed to the
584   :func:`exec` function. The return value is ``None``.
585
586   In all cases, if the optional parts are omitted, the code is executed in the
587   current scope.  If only *globals* is provided, it must be a dictionary
588   (and not a subclass of dictionary), which
589   will be used for both the global and the local variables.  If *globals* and
590   *locals* are given, they are used for the global and local variables,
591   respectively.  If provided, *locals* can be any mapping object.  Remember
592   that at the module level, globals and locals are the same dictionary. If exec
593   gets two separate objects as *globals* and *locals*, the code will be
594   executed as if it were embedded in a class definition.
595
596   If the *globals* dictionary does not contain a value for the key
597   ``__builtins__``, a reference to the dictionary of the built-in module
598   :mod:`builtins` is inserted under that key.  That way you can control what
599   builtins are available to the executed code by inserting your own
600   ``__builtins__`` dictionary into *globals* before passing it to :func:`exec`.
601
602   The *closure* argument specifies a closure--a tuple of cellvars.
603   It's only valid when the *object* is a code object containing free variables.
604   The length of the tuple must exactly match the number of free variables
605   referenced by the code object.
606
607   .. audit-event:: exec code_object exec
608
609      Raises an :ref:`auditing event <auditing>` ``exec`` with the code object
610      as the argument. Code compilation events may also be raised.
611
612   .. note::
613
614      The built-in functions :func:`globals` and :func:`locals` return the current
615      global and local dictionary, respectively, which may be useful to pass around
616      for use as the second and third argument to :func:`exec`.
617
618   .. note::
619
620      The default *locals* act as described for function :func:`locals` below:
621      modifications to the default *locals* dictionary should not be attempted.
622      Pass an explicit *locals* dictionary if you need to see effects of the
623      code on *locals* after function :func:`exec` returns.
624
625   .. versionchanged:: 3.11
626      Added the *closure* parameter.
627
628
629.. function:: filter(function, iterable)
630
631   Construct an iterator from those elements of *iterable* for which *function*
632   is true.  *iterable* may be either a sequence, a container which
633   supports iteration, or an iterator.  If *function* is ``None``, the identity
634   function is assumed, that is, all elements of *iterable* that are false are
635   removed.
636
637   Note that ``filter(function, iterable)`` is equivalent to the generator
638   expression ``(item for item in iterable if function(item))`` if function is
639   not ``None`` and ``(item for item in iterable if item)`` if function is
640   ``None``.
641
642   See :func:`itertools.filterfalse` for the complementary function that returns
643   elements of *iterable* for which *function* is false.
644
645
646.. class:: float(x=0.0)
647
648   .. index::
649      single: NaN
650      single: Infinity
651
652   Return a floating point number constructed from a number or string *x*.
653
654   If the argument is a string, it should contain a decimal number, optionally
655   preceded by a sign, and optionally embedded in whitespace.  The optional
656   sign may be ``'+'`` or ``'-'``; a ``'+'`` sign has no effect on the value
657   produced.  The argument may also be a string representing a NaN
658   (not-a-number), or positive or negative infinity.  More precisely, the
659   input must conform to the ``floatvalue`` production rule in the following
660   grammar, after leading and trailing whitespace characters are removed:
661
662   .. productionlist:: float
663      sign: "+" | "-"
664      infinity: "Infinity" | "inf"
665      nan: "nan"
666      digitpart: `digit` (["_"] `digit`)*
667      number: [`digitpart`] "." `digitpart` | `digitpart` ["."]
668      exponent: ("e" | "E") ["+" | "-"] `digitpart`
669      floatnumber: number [`exponent`]
670      floatvalue: [`sign`] (`floatnumber` | `infinity` | `nan`)
671
672   Here ``digit`` is a Unicode decimal digit (character in the Unicode general
673   category ``Nd``). Case is not significant, so, for example, "inf", "Inf",
674   "INFINITY", and "iNfINity" are all acceptable spellings for positive
675   infinity.
676
677   Otherwise, if the argument is an integer or a floating point number, a
678   floating point number with the same value (within Python's floating point
679   precision) is returned.  If the argument is outside the range of a Python
680   float, an :exc:`OverflowError` will be raised.
681
682   For a general Python object ``x``, ``float(x)`` delegates to
683   ``x.__float__()``.  If ``__float__()`` is not defined then it falls back
684   to :meth:`__index__`.
685
686   If no argument is given, ``0.0`` is returned.
687
688   Examples::
689
690      >>> float('+1.23')
691      1.23
692      >>> float('   -12345\n')
693      -12345.0
694      >>> float('1e-003')
695      0.001
696      >>> float('+1E6')
697      1000000.0
698      >>> float('-Infinity')
699      -inf
700
701   The float type is described in :ref:`typesnumeric`.
702
703   .. versionchanged:: 3.6
704      Grouping digits with underscores as in code literals is allowed.
705
706   .. versionchanged:: 3.7
707      *x* is now a positional-only parameter.
708
709   .. versionchanged:: 3.8
710      Falls back to :meth:`__index__` if :meth:`__float__` is not defined.
711
712
713.. index::
714   single: __format__
715   single: string; format() (built-in function)
716
717.. function:: format(value, format_spec="")
718
719   Convert a *value* to a "formatted" representation, as controlled by
720   *format_spec*.  The interpretation of *format_spec* will depend on the type
721   of the *value* argument; however, there is a standard formatting syntax that
722   is used by most built-in types: :ref:`formatspec`.
723
724   The default *format_spec* is an empty string which usually gives the same
725   effect as calling :func:`str(value) <str>`.
726
727   A call to ``format(value, format_spec)`` is translated to
728   ``type(value).__format__(value, format_spec)`` which bypasses the instance
729   dictionary when searching for the value's :meth:`__format__` method.  A
730   :exc:`TypeError` exception is raised if the method search reaches
731   :mod:`object` and the *format_spec* is non-empty, or if either the
732   *format_spec* or the return value are not strings.
733
734   .. versionchanged:: 3.4
735      ``object().__format__(format_spec)`` raises :exc:`TypeError`
736      if *format_spec* is not an empty string.
737
738
739.. _func-frozenset:
740.. class:: frozenset(iterable=set())
741   :noindex:
742
743   Return a new :class:`frozenset` object, optionally with elements taken from
744   *iterable*.  ``frozenset`` is a built-in class.  See :class:`frozenset` and
745   :ref:`types-set` for documentation about this class.
746
747   For other containers see the built-in :class:`set`, :class:`list`,
748   :class:`tuple`, and :class:`dict` classes, as well as the :mod:`collections`
749   module.
750
751
752.. function:: getattr(object, name)
753              getattr(object, name, default)
754
755   Return the value of the named attribute of *object*.  *name* must be a string.
756   If the string is the name of one of the object's attributes, the result is the
757   value of that attribute.  For example, ``getattr(x, 'foobar')`` is equivalent to
758   ``x.foobar``.  If the named attribute does not exist, *default* is returned if
759   provided, otherwise :exc:`AttributeError` is raised.
760   *name* need not be a Python identifier (see :func:`setattr`).
761
762   .. note::
763
764      Since :ref:`private name mangling <private-name-mangling>` happens at
765      compilation time, one must manually mangle a private attribute's
766      (attributes with two leading underscores) name in order to retrieve it with
767      :func:`getattr`.
768
769
770.. function:: globals()
771
772   Return the dictionary implementing the current module namespace. For code within
773   functions, this is set when the function is defined and remains the same
774   regardless of where the function is called.
775
776
777.. function:: hasattr(object, name)
778
779   The arguments are an object and a string.  The result is ``True`` if the
780   string is the name of one of the object's attributes, ``False`` if not. (This
781   is implemented by calling ``getattr(object, name)`` and seeing whether it
782   raises an :exc:`AttributeError` or not.)
783
784
785.. function:: hash(object)
786
787   Return the hash value of the object (if it has one).  Hash values are
788   integers.  They are used to quickly compare dictionary keys during a
789   dictionary lookup.  Numeric values that compare equal have the same hash
790   value (even if they are of different types, as is the case for 1 and 1.0).
791
792   .. note::
793
794      For objects with custom :meth:`__hash__` methods, note that :func:`hash`
795      truncates the return value based on the bit width of the host machine.
796      See :meth:`__hash__` for details.
797
798.. function:: help()
799              help(request)
800
801   Invoke the built-in help system.  (This function is intended for interactive
802   use.)  If no argument is given, the interactive help system starts on the
803   interpreter console.  If the argument is a string, then the string is looked up
804   as the name of a module, function, class, method, keyword, or documentation
805   topic, and a help page is printed on the console.  If the argument is any other
806   kind of object, a help page on the object is generated.
807
808   Note that if a slash(/) appears in the parameter list of a function when
809   invoking :func:`help`, it means that the parameters prior to the slash are
810   positional-only. For more info, see
811   :ref:`the FAQ entry on positional-only parameters <faq-positional-only-arguments>`.
812
813   This function is added to the built-in namespace by the :mod:`site` module.
814
815   .. versionchanged:: 3.4
816      Changes to :mod:`pydoc` and :mod:`inspect` mean that the reported
817      signatures for callables are now more comprehensive and consistent.
818
819
820.. function:: hex(x)
821
822   Convert an integer number to a lowercase hexadecimal string prefixed with
823   "0x". If *x* is not a Python :class:`int` object, it has to define an
824   :meth:`__index__` method that returns an integer. Some examples:
825
826      >>> hex(255)
827      '0xff'
828      >>> hex(-42)
829      '-0x2a'
830
831   If you want to convert an integer number to an uppercase or lower hexadecimal
832   string with prefix or not, you can use either of the following ways:
833
834     >>> '%#x' % 255, '%x' % 255, '%X' % 255
835     ('0xff', 'ff', 'FF')
836     >>> format(255, '#x'), format(255, 'x'), format(255, 'X')
837     ('0xff', 'ff', 'FF')
838     >>> f'{255:#x}', f'{255:x}', f'{255:X}'
839     ('0xff', 'ff', 'FF')
840
841   See also :func:`format` for more information.
842
843   See also :func:`int` for converting a hexadecimal string to an
844   integer using a base of 16.
845
846   .. note::
847
848      To obtain a hexadecimal string representation for a float, use the
849      :meth:`float.hex` method.
850
851
852.. function:: id(object)
853
854   Return the "identity" of an object.  This is an integer which
855   is guaranteed to be unique and constant for this object during its lifetime.
856   Two objects with non-overlapping lifetimes may have the same :func:`id`
857   value.
858
859   .. impl-detail:: This is the address of the object in memory.
860
861   .. audit-event:: builtins.id id id
862
863
864.. function:: input()
865              input(prompt)
866
867   If the *prompt* argument is present, it is written to standard output without
868   a trailing newline.  The function then reads a line from input, converts it
869   to a string (stripping a trailing newline), and returns that.  When EOF is
870   read, :exc:`EOFError` is raised.  Example::
871
872      >>> s = input('--> ')  # doctest: +SKIP
873      --> Monty Python's Flying Circus
874      >>> s  # doctest: +SKIP
875      "Monty Python's Flying Circus"
876
877   If the :mod:`readline` module was loaded, then :func:`input` will use it
878   to provide elaborate line editing and history features.
879
880   .. audit-event:: builtins.input prompt input
881
882      Raises an :ref:`auditing event <auditing>` ``builtins.input`` with
883      argument ``prompt`` before reading input
884
885   .. audit-event:: builtins.input/result result input
886
887      Raises an :ref:`auditing event <auditing>` ``builtins.input/result``
888      with the result after successfully reading input.
889
890
891.. class:: int(x=0)
892           int(x, base=10)
893
894   Return an integer object constructed from a number or string *x*, or return
895   ``0`` if no arguments are given.  If *x* defines :meth:`__int__`,
896   ``int(x)`` returns ``x.__int__()``.  If *x* defines :meth:`__index__`,
897   it returns ``x.__index__()``.  If *x* defines :meth:`__trunc__`,
898   it returns ``x.__trunc__()``.
899   For floating point numbers, this truncates towards zero.
900
901   If *x* is not a number or if *base* is given, then *x* must be a string,
902   :class:`bytes`, or :class:`bytearray` instance representing an integer
903   in radix *base*.  Optionally, the string can be preceded by ``+`` or ``-``
904   (with no space in between), have leading zeros, be surrounded by whitespace,
905   and have single underscores interspersed between digits.
906
907   A base-n integer string contains digits, each representing a value from 0 to
908   n-1. The values 0--9 can be represented by any Unicode decimal digit. The
909   values 10--35 can be represented by ``a`` to ``z`` (or ``A`` to ``Z``). The
910   default *base* is 10. The allowed bases are 0 and 2--36. Base-2, -8, and -16
911   strings can be optionally prefixed with ``0b``/``0B``, ``0o``/``0O``, or
912   ``0x``/``0X``, as with integer literals in code.  For base 0, the string is
913   interpreted in a similar way to an :ref:`integer literal in code <integers>`,
914   in that the actual base is 2, 8, 10, or 16 as determined by the prefix. Base
915   0 also disallows leading zeros: ``int('010', 0)`` is not legal, while
916   ``int('010')`` and ``int('010', 8)`` are.
917
918   The integer type is described in :ref:`typesnumeric`.
919
920   .. versionchanged:: 3.4
921      If *base* is not an instance of :class:`int` and the *base* object has a
922      :meth:`base.__index__ <object.__index__>` method, that method is called
923      to obtain an integer for the base.  Previous versions used
924      :meth:`base.__int__ <object.__int__>` instead of :meth:`base.__index__
925      <object.__index__>`.
926
927   .. versionchanged:: 3.6
928      Grouping digits with underscores as in code literals is allowed.
929
930   .. versionchanged:: 3.7
931      *x* is now a positional-only parameter.
932
933   .. versionchanged:: 3.8
934      Falls back to :meth:`__index__` if :meth:`__int__` is not defined.
935
936   .. versionchanged:: 3.11
937      The delegation to :meth:`__trunc__` is deprecated.
938
939   .. versionchanged:: 3.11
940      :class:`int` string inputs and string representations can be limited to
941      help avoid denial of service attacks. A :exc:`ValueError` is raised when
942      the limit is exceeded while converting a string *x* to an :class:`int` or
943      when converting an :class:`int` into a string would exceed the limit.
944      See the :ref:`integer string conversion length limitation
945      <int_max_str_digits>` documentation.
946
947.. function:: isinstance(object, classinfo)
948
949   Return ``True`` if the *object* argument is an instance of the *classinfo*
950   argument, or of a (direct, indirect, or :term:`virtual <abstract base
951   class>`) subclass thereof.  If *object* is not
952   an object of the given type, the function always returns ``False``.
953   If *classinfo* is a tuple of type objects (or recursively, other such
954   tuples) or a :ref:`types-union` of multiple types, return ``True`` if
955   *object* is an instance of any of the types.
956   If *classinfo* is not a type or tuple of types and such tuples,
957   a :exc:`TypeError` exception is raised. :exc:`TypeError` may not be
958   raised for an invalid type if an earlier check succeeds.
959
960   .. versionchanged:: 3.10
961      *classinfo* can be a :ref:`types-union`.
962
963
964.. function:: issubclass(class, classinfo)
965
966   Return ``True`` if *class* is a subclass (direct, indirect, or :term:`virtual
967   <abstract base class>`) of *classinfo*.  A
968   class is considered a subclass of itself. *classinfo* may be a tuple of class
969   objects (or recursively, other such tuples)
970   or a :ref:`types-union`, in which case return ``True`` if *class* is a
971   subclass of any entry in *classinfo*.  In any other case, a :exc:`TypeError`
972   exception is raised.
973
974   .. versionchanged:: 3.10
975      *classinfo* can be a :ref:`types-union`.
976
977
978.. function:: iter(object)
979              iter(object, sentinel)
980
981   Return an :term:`iterator` object.  The first argument is interpreted very
982   differently depending on the presence of the second argument. Without a
983   second argument, *object* must be a collection object which supports the
984   :term:`iterable` protocol (the :meth:`__iter__` method), or it must support
985   the sequence protocol (the :meth:`__getitem__` method with integer arguments
986   starting at ``0``).  If it does not support either of those protocols,
987   :exc:`TypeError` is raised. If the second argument, *sentinel*, is given,
988   then *object* must be a callable object.  The iterator created in this case
989   will call *object* with no arguments for each call to its
990   :meth:`~iterator.__next__` method; if the value returned is equal to
991   *sentinel*, :exc:`StopIteration` will be raised, otherwise the value will
992   be returned.
993
994   See also :ref:`typeiter`.
995
996   One useful application of the second form of :func:`iter` is to build a
997   block-reader. For example, reading fixed-width blocks from a binary
998   database file until the end of file is reached::
999
1000      from functools import partial
1001      with open('mydata.db', 'rb') as f:
1002          for block in iter(partial(f.read, 64), b''):
1003              process_block(block)
1004
1005
1006.. function:: len(s)
1007
1008   Return the length (the number of items) of an object.  The argument may be a
1009   sequence (such as a string, bytes, tuple, list, or range) or a collection
1010   (such as a dictionary, set, or frozen set).
1011
1012   .. impl-detail::
1013
1014      ``len`` raises :exc:`OverflowError` on lengths larger than
1015      :data:`sys.maxsize`, such as :class:`range(2 ** 100) <range>`.
1016
1017
1018.. _func-list:
1019.. class:: list()
1020           list(iterable)
1021   :noindex:
1022
1023   Rather than being a function, :class:`list` is actually a mutable
1024   sequence type, as documented in :ref:`typesseq-list` and :ref:`typesseq`.
1025
1026
1027.. function:: locals()
1028
1029   Update and return a dictionary representing the current local symbol table.
1030   Free variables are returned by :func:`locals` when it is called in function
1031   blocks, but not in class blocks. Note that at the module level, :func:`locals`
1032   and :func:`globals` are the same dictionary.
1033
1034   .. note::
1035      The contents of this dictionary should not be modified; changes may not
1036      affect the values of local and free variables used by the interpreter.
1037
1038.. function:: map(function, iterable, *iterables)
1039
1040   Return an iterator that applies *function* to every item of *iterable*,
1041   yielding the results.  If additional *iterables* arguments are passed,
1042   *function* must take that many arguments and is applied to the items from all
1043   iterables in parallel.  With multiple iterables, the iterator stops when the
1044   shortest iterable is exhausted.  For cases where the function inputs are
1045   already arranged into argument tuples, see :func:`itertools.starmap`\.
1046
1047
1048.. function:: max(iterable, *, key=None)
1049              max(iterable, *, default, key=None)
1050              max(arg1, arg2, *args, key=None)
1051
1052   Return the largest item in an iterable or the largest of two or more
1053   arguments.
1054
1055   If one positional argument is provided, it should be an :term:`iterable`.
1056   The largest item in the iterable is returned.  If two or more positional
1057   arguments are provided, the largest of the positional arguments is
1058   returned.
1059
1060   There are two optional keyword-only arguments. The *key* argument specifies
1061   a one-argument ordering function like that used for :meth:`list.sort`. The
1062   *default* argument specifies an object to return if the provided iterable is
1063   empty. If the iterable is empty and *default* is not provided, a
1064   :exc:`ValueError` is raised.
1065
1066   If multiple items are maximal, the function returns the first one
1067   encountered.  This is consistent with other sort-stability preserving tools
1068   such as ``sorted(iterable, key=keyfunc, reverse=True)[0]`` and
1069   ``heapq.nlargest(1, iterable, key=keyfunc)``.
1070
1071   .. versionadded:: 3.4
1072      The *default* keyword-only argument.
1073
1074   .. versionchanged:: 3.8
1075      The *key* can be ``None``.
1076
1077
1078.. _func-memoryview:
1079.. class:: memoryview(object)
1080   :noindex:
1081
1082   Return a "memory view" object created from the given argument.  See
1083   :ref:`typememoryview` for more information.
1084
1085
1086.. function:: min(iterable, *, key=None)
1087              min(iterable, *, default, key=None)
1088              min(arg1, arg2, *args, key=None)
1089
1090   Return the smallest item in an iterable or the smallest of two or more
1091   arguments.
1092
1093   If one positional argument is provided, it should be an :term:`iterable`.
1094   The smallest item in the iterable is returned.  If two or more positional
1095   arguments are provided, the smallest of the positional arguments is
1096   returned.
1097
1098   There are two optional keyword-only arguments. The *key* argument specifies
1099   a one-argument ordering function like that used for :meth:`list.sort`. The
1100   *default* argument specifies an object to return if the provided iterable is
1101   empty. If the iterable is empty and *default* is not provided, a
1102   :exc:`ValueError` is raised.
1103
1104   If multiple items are minimal, the function returns the first one
1105   encountered.  This is consistent with other sort-stability preserving tools
1106   such as ``sorted(iterable, key=keyfunc)[0]`` and ``heapq.nsmallest(1,
1107   iterable, key=keyfunc)``.
1108
1109   .. versionadded:: 3.4
1110      The *default* keyword-only argument.
1111
1112   .. versionchanged:: 3.8
1113      The *key* can be ``None``.
1114
1115
1116.. function:: next(iterator)
1117              next(iterator, default)
1118
1119   Retrieve the next item from the :term:`iterator` by calling its
1120   :meth:`~iterator.__next__` method.  If *default* is given, it is returned
1121   if the iterator is exhausted, otherwise :exc:`StopIteration` is raised.
1122
1123
1124.. class:: object()
1125
1126   Return a new featureless object.  :class:`object` is a base for all classes.
1127   It has methods that are common to all instances of Python classes.  This
1128   function does not accept any arguments.
1129
1130   .. note::
1131
1132      :class:`object` does *not* have a :attr:`~object.__dict__`, so you can't
1133      assign arbitrary attributes to an instance of the :class:`object` class.
1134
1135
1136.. function:: oct(x)
1137
1138  Convert an integer number to an octal string prefixed with "0o".  The result
1139  is a valid Python expression. If *x* is not a Python :class:`int` object, it
1140  has to define an :meth:`__index__` method that returns an integer. For
1141  example:
1142
1143      >>> oct(8)
1144      '0o10'
1145      >>> oct(-56)
1146      '-0o70'
1147
1148  If you want to convert an integer number to an octal string either with the prefix
1149  "0o" or not, you can use either of the following ways.
1150
1151      >>> '%#o' % 10, '%o' % 10
1152      ('0o12', '12')
1153      >>> format(10, '#o'), format(10, 'o')
1154      ('0o12', '12')
1155      >>> f'{10:#o}', f'{10:o}'
1156      ('0o12', '12')
1157
1158  See also :func:`format` for more information.
1159
1160   .. index::
1161      single: file object; open() built-in function
1162
1163.. function:: open(file, mode='r', buffering=-1, encoding=None, errors=None, newline=None, closefd=True, opener=None)
1164
1165   Open *file* and return a corresponding :term:`file object`.  If the file
1166   cannot be opened, an :exc:`OSError` is raised. See
1167   :ref:`tut-files` for more examples of how to use this function.
1168
1169   *file* is a :term:`path-like object` giving the pathname (absolute or
1170   relative to the current working directory) of the file to be opened or an
1171   integer file descriptor of the file to be wrapped.  (If a file descriptor is
1172   given, it is closed when the returned I/O object is closed unless *closefd*
1173   is set to ``False``.)
1174
1175   *mode* is an optional string that specifies the mode in which the file is
1176   opened.  It defaults to ``'r'`` which means open for reading in text mode.
1177   Other common values are ``'w'`` for writing (truncating the file if it
1178   already exists), ``'x'`` for exclusive creation, and ``'a'`` for appending
1179   (which on *some* Unix systems, means that *all* writes append to the end of
1180   the file regardless of the current seek position).  In text mode, if
1181   *encoding* is not specified the encoding used is platform-dependent:
1182   :func:`locale.getencoding()` is called to get the current locale encoding.
1183   (For reading and writing raw bytes use binary mode and leave
1184   *encoding* unspecified.)  The available modes are:
1185
1186   .. _filemodes:
1187
1188   .. index::
1189      pair: file; modes
1190
1191   ========= ===============================================================
1192   Character Meaning
1193   ========= ===============================================================
1194   ``'r'``   open for reading (default)
1195   ``'w'``   open for writing, truncating the file first
1196   ``'x'``   open for exclusive creation, failing if the file already exists
1197   ``'a'``   open for writing, appending to the end of file if it exists
1198   ``'b'``   binary mode
1199   ``'t'``   text mode (default)
1200   ``'+'``   open for updating (reading and writing)
1201   ========= ===============================================================
1202
1203   The default mode is ``'r'`` (open for reading text, a synonym of ``'rt'``).
1204   Modes ``'w+'`` and ``'w+b'`` open and truncate the file.  Modes ``'r+'``
1205   and ``'r+b'`` open the file with no truncation.
1206
1207   As mentioned in the :ref:`io-overview`, Python distinguishes between binary
1208   and text I/O.  Files opened in binary mode (including ``'b'`` in the *mode*
1209   argument) return contents as :class:`bytes` objects without any decoding.  In
1210   text mode (the default, or when ``'t'`` is included in the *mode* argument),
1211   the contents of the file are returned as :class:`str`, the bytes having been
1212   first decoded using a platform-dependent encoding or using the specified
1213   *encoding* if given.
1214
1215   .. note::
1216
1217      Python doesn't depend on the underlying operating system's notion of text
1218      files; all the processing is done by Python itself, and is therefore
1219      platform-independent.
1220
1221   *buffering* is an optional integer used to set the buffering policy.  Pass 0
1222   to switch buffering off (only allowed in binary mode), 1 to select line
1223   buffering (only usable in text mode), and an integer > 1 to indicate the size
1224   in bytes of a fixed-size chunk buffer. Note that specifying a buffer size this
1225   way applies for binary buffered I/O, but ``TextIOWrapper`` (i.e., files opened
1226   with ``mode='r+'``) would have another buffering. To disable buffering in
1227   ``TextIOWrapper``, consider using the ``write_through`` flag for
1228   :func:`io.TextIOWrapper.reconfigure`. When no *buffering* argument is
1229   given, the default buffering policy works as follows:
1230
1231   * Binary files are buffered in fixed-size chunks; the size of the buffer is
1232     chosen using a heuristic trying to determine the underlying device's "block
1233     size" and falling back on :attr:`io.DEFAULT_BUFFER_SIZE`.  On many systems,
1234     the buffer will typically be 4096 or 8192 bytes long.
1235
1236   * "Interactive" text files (files for which :meth:`~io.IOBase.isatty`
1237     returns ``True``) use line buffering.  Other text files use the policy
1238     described above for binary files.
1239
1240   *encoding* is the name of the encoding used to decode or encode the file.
1241   This should only be used in text mode.  The default encoding is platform
1242   dependent (whatever :func:`locale.getencoding` returns), but any
1243   :term:`text encoding` supported by Python can be used.
1244   See the :mod:`codecs` module for the list of supported encodings.
1245
1246   *errors* is an optional string that specifies how encoding and decoding
1247   errors are to be handled—this cannot be used in binary mode.
1248   A variety of standard error handlers are available
1249   (listed under :ref:`error-handlers`), though any
1250   error handling name that has been registered with
1251   :func:`codecs.register_error` is also valid.  The standard names
1252   include:
1253
1254   * ``'strict'`` to raise a :exc:`ValueError` exception if there is
1255     an encoding error.  The default value of ``None`` has the same
1256     effect.
1257
1258   * ``'ignore'`` ignores errors.  Note that ignoring encoding errors
1259     can lead to data loss.
1260
1261   * ``'replace'`` causes a replacement marker (such as ``'?'``) to be inserted
1262     where there is malformed data.
1263
1264   * ``'surrogateescape'`` will represent any incorrect bytes as low
1265     surrogate code units ranging from U+DC80 to U+DCFF.
1266     These surrogate code units will then be turned back into
1267     the same bytes when the ``surrogateescape`` error handler is used
1268     when writing data.  This is useful for processing files in an
1269     unknown encoding.
1270
1271   * ``'xmlcharrefreplace'`` is only supported when writing to a file.
1272     Characters not supported by the encoding are replaced with the
1273     appropriate XML character reference ``&#nnn;``.
1274
1275   * ``'backslashreplace'`` replaces malformed data by Python's backslashed
1276     escape sequences.
1277
1278   * ``'namereplace'`` (also only supported when writing)
1279     replaces unsupported characters with ``\N{...}`` escape sequences.
1280
1281   .. index::
1282      single: universal newlines; open() built-in function
1283
1284   .. _open-newline-parameter:
1285
1286   *newline* determines how to parse newline characters from the stream.
1287   It can be ``None``, ``''``, ``'\n'``, ``'\r'``, and
1288   ``'\r\n'``.  It works as follows:
1289
1290   * When reading input from the stream, if *newline* is ``None``, universal
1291     newlines mode is enabled.  Lines in the input can end in ``'\n'``,
1292     ``'\r'``, or ``'\r\n'``, and these are translated into ``'\n'`` before
1293     being returned to the caller.  If it is ``''``, universal newlines mode is
1294     enabled, but line endings are returned to the caller untranslated.  If it
1295     has any of the other legal values, input lines are only terminated by the
1296     given string, and the line ending is returned to the caller untranslated.
1297
1298   * When writing output to the stream, if *newline* is ``None``, any ``'\n'``
1299     characters written are translated to the system default line separator,
1300     :data:`os.linesep`.  If *newline* is ``''`` or ``'\n'``, no translation
1301     takes place.  If *newline* is any of the other legal values, any ``'\n'``
1302     characters written are translated to the given string.
1303
1304   If *closefd* is ``False`` and a file descriptor rather than a filename was
1305   given, the underlying file descriptor will be kept open when the file is
1306   closed.  If a filename is given *closefd* must be ``True`` (the default);
1307   otherwise, an error will be raised.
1308
1309   A custom opener can be used by passing a callable as *opener*. The underlying
1310   file descriptor for the file object is then obtained by calling *opener* with
1311   (*file*, *flags*). *opener* must return an open file descriptor (passing
1312   :mod:`os.open` as *opener* results in functionality similar to passing
1313   ``None``).
1314
1315   The newly created file is :ref:`non-inheritable <fd_inheritance>`.
1316
1317   The following example uses the :ref:`dir_fd <dir_fd>` parameter of the
1318   :func:`os.open` function to open a file relative to a given directory::
1319
1320      >>> import os
1321      >>> dir_fd = os.open('somedir', os.O_RDONLY)
1322      >>> def opener(path, flags):
1323      ...     return os.open(path, flags, dir_fd=dir_fd)
1324      ...
1325      >>> with open('spamspam.txt', 'w', opener=opener) as f:
1326      ...     print('This will be written to somedir/spamspam.txt', file=f)
1327      ...
1328      >>> os.close(dir_fd)  # don't leak a file descriptor
1329
1330   The type of :term:`file object` returned by the :func:`open` function
1331   depends on the mode.  When :func:`open` is used to open a file in a text
1332   mode (``'w'``, ``'r'``, ``'wt'``, ``'rt'``, etc.), it returns a subclass of
1333   :class:`io.TextIOBase` (specifically :class:`io.TextIOWrapper`).  When used
1334   to open a file in a binary mode with buffering, the returned class is a
1335   subclass of :class:`io.BufferedIOBase`.  The exact class varies: in read
1336   binary mode, it returns an :class:`io.BufferedReader`; in write binary and
1337   append binary modes, it returns an :class:`io.BufferedWriter`, and in
1338   read/write mode, it returns an :class:`io.BufferedRandom`.  When buffering is
1339   disabled, the raw stream, a subclass of :class:`io.RawIOBase`,
1340   :class:`io.FileIO`, is returned.
1341
1342   .. index::
1343      single: line-buffered I/O
1344      single: unbuffered I/O
1345      single: buffer size, I/O
1346      single: I/O control; buffering
1347      single: binary mode
1348      single: text mode
1349      pair: module; sys
1350
1351   See also the file handling modules, such as :mod:`fileinput`, :mod:`io`
1352   (where :func:`open` is declared), :mod:`os`, :mod:`os.path`, :mod:`tempfile`,
1353   and :mod:`shutil`.
1354
1355   .. audit-event:: open file,mode,flags open
1356
1357   The ``mode`` and ``flags`` arguments may have been modified or inferred from
1358   the original call.
1359
1360   .. versionchanged:: 3.3
1361
1362         * The *opener* parameter was added.
1363         * The ``'x'`` mode was added.
1364         * :exc:`IOError` used to be raised, it is now an alias of :exc:`OSError`.
1365         * :exc:`FileExistsError` is now raised if the file opened in exclusive
1366           creation mode (``'x'``) already exists.
1367
1368   .. versionchanged:: 3.4
1369
1370         * The file is now non-inheritable.
1371
1372   .. versionchanged:: 3.5
1373
1374         * If the system call is interrupted and the signal handler does not raise an
1375           exception, the function now retries the system call instead of raising an
1376           :exc:`InterruptedError` exception (see :pep:`475` for the rationale).
1377         * The ``'namereplace'`` error handler was added.
1378
1379   .. versionchanged:: 3.6
1380
1381         * Support added to accept objects implementing :class:`os.PathLike`.
1382         * On Windows, opening a console buffer may return a subclass of
1383           :class:`io.RawIOBase` other than :class:`io.FileIO`.
1384
1385   .. versionchanged:: 3.11
1386      The ``'U'`` mode has been removed.
1387
1388.. function:: ord(c)
1389
1390   Given a string representing one Unicode character, return an integer
1391   representing the Unicode code point of that character.  For example,
1392   ``ord('a')`` returns the integer ``97`` and ``ord('€')`` (Euro sign)
1393   returns ``8364``.  This is the inverse of :func:`chr`.
1394
1395
1396.. function:: pow(base, exp, mod=None)
1397
1398   Return *base* to the power *exp*; if *mod* is present, return *base* to the
1399   power *exp*, modulo *mod* (computed more efficiently than
1400   ``pow(base, exp) % mod``). The two-argument form ``pow(base, exp)`` is
1401   equivalent to using the power operator: ``base**exp``.
1402
1403   The arguments must have numeric types.  With mixed operand types, the
1404   coercion rules for binary arithmetic operators apply.  For :class:`int`
1405   operands, the result has the same type as the operands (after coercion)
1406   unless the second argument is negative; in that case, all arguments are
1407   converted to float and a float result is delivered.  For example, ``pow(10, 2)``
1408   returns ``100``, but ``pow(10, -2)`` returns ``0.01``.  For a negative base of
1409   type :class:`int` or :class:`float` and a non-integral exponent, a complex
1410   result is delivered.  For example, ``pow(-9, 0.5)`` returns a value close
1411   to ``3j``.
1412
1413   For :class:`int` operands *base* and *exp*, if *mod* is present, *mod* must
1414   also be of integer type and *mod* must be nonzero. If *mod* is present and
1415   *exp* is negative, *base* must be relatively prime to *mod*. In that case,
1416   ``pow(inv_base, -exp, mod)`` is returned, where *inv_base* is an inverse to
1417   *base* modulo *mod*.
1418
1419   Here's an example of computing an inverse for ``38`` modulo ``97``::
1420
1421      >>> pow(38, -1, mod=97)
1422      23
1423      >>> 23 * 38 % 97 == 1
1424      True
1425
1426   .. versionchanged:: 3.8
1427      For :class:`int` operands, the three-argument form of ``pow`` now allows
1428      the second argument to be negative, permitting computation of modular
1429      inverses.
1430
1431   .. versionchanged:: 3.8
1432      Allow keyword arguments.  Formerly, only positional arguments were
1433      supported.
1434
1435
1436.. function:: print(*objects, sep=' ', end='\n', file=None, flush=False)
1437
1438   Print *objects* to the text stream *file*, separated by *sep* and followed
1439   by *end*.  *sep*, *end*, *file*, and *flush*, if present, must be given as keyword
1440   arguments.
1441
1442   All non-keyword arguments are converted to strings like :func:`str` does and
1443   written to the stream, separated by *sep* and followed by *end*.  Both *sep*
1444   and *end* must be strings; they can also be ``None``, which means to use the
1445   default values.  If no *objects* are given, :func:`print` will just write
1446   *end*.
1447
1448   The *file* argument must be an object with a ``write(string)`` method; if it
1449   is not present or ``None``, :data:`sys.stdout` will be used.  Since printed
1450   arguments are converted to text strings, :func:`print` cannot be used with
1451   binary mode file objects.  For these, use ``file.write(...)`` instead.
1452
1453   Output buffering is usually determined by *file*.
1454   However, if *flush* is true, the stream is forcibly flushed.
1455
1456
1457   .. versionchanged:: 3.3
1458      Added the *flush* keyword argument.
1459
1460
1461.. class:: property(fget=None, fset=None, fdel=None, doc=None)
1462
1463   Return a property attribute.
1464
1465   *fget* is a function for getting an attribute value.  *fset* is a function
1466   for setting an attribute value. *fdel* is a function for deleting an attribute
1467   value.  And *doc* creates a docstring for the attribute.
1468
1469   A typical use is to define a managed attribute ``x``::
1470
1471      class C:
1472          def __init__(self):
1473              self._x = None
1474
1475          def getx(self):
1476              return self._x
1477
1478          def setx(self, value):
1479              self._x = value
1480
1481          def delx(self):
1482              del self._x
1483
1484          x = property(getx, setx, delx, "I'm the 'x' property.")
1485
1486   If *c* is an instance of *C*, ``c.x`` will invoke the getter,
1487   ``c.x = value`` will invoke the setter, and ``del c.x`` the deleter.
1488
1489   If given, *doc* will be the docstring of the property attribute. Otherwise, the
1490   property will copy *fget*'s docstring (if it exists).  This makes it possible to
1491   create read-only properties easily using :func:`property` as a :term:`decorator`::
1492
1493      class Parrot:
1494          def __init__(self):
1495              self._voltage = 100000
1496
1497          @property
1498          def voltage(self):
1499              """Get the current voltage."""
1500              return self._voltage
1501
1502   The ``@property`` decorator turns the :meth:`voltage` method into a "getter"
1503   for a read-only attribute with the same name, and it sets the docstring for
1504   *voltage* to "Get the current voltage."
1505
1506   A property object has :attr:`~property.getter`, :attr:`~property.setter`,
1507   and :attr:`~property.deleter` methods usable as decorators that create a
1508   copy of the property with the corresponding accessor function set to the
1509   decorated function.  This is best explained with an example::
1510
1511      class C:
1512          def __init__(self):
1513              self._x = None
1514
1515          @property
1516          def x(self):
1517              """I'm the 'x' property."""
1518              return self._x
1519
1520          @x.setter
1521          def x(self, value):
1522              self._x = value
1523
1524          @x.deleter
1525          def x(self):
1526              del self._x
1527
1528   This code is exactly equivalent to the first example.  Be sure to give the
1529   additional functions the same name as the original property (``x`` in this
1530   case.)
1531
1532   The returned property object also has the attributes ``fget``, ``fset``, and
1533   ``fdel`` corresponding to the constructor arguments.
1534
1535   .. versionchanged:: 3.5
1536      The docstrings of property objects are now writeable.
1537
1538
1539.. _func-range:
1540.. class:: range(stop)
1541           range(start, stop, step=1)
1542   :noindex:
1543
1544   Rather than being a function, :class:`range` is actually an immutable
1545   sequence type, as documented in :ref:`typesseq-range` and :ref:`typesseq`.
1546
1547
1548.. function:: repr(object)
1549
1550   Return a string containing a printable representation of an object.  For many
1551   types, this function makes an attempt to return a string that would yield an
1552   object with the same value when passed to :func:`eval`; otherwise, the
1553   representation is a string enclosed in angle brackets that contains the name
1554   of the type of the object together with additional information often
1555   including the name and address of the object.  A class can control what this
1556   function returns for its instances by defining a :meth:`__repr__` method.
1557   If :func:`sys.displayhook` is not accessible, this function will raise
1558   :exc:`RuntimeError`.
1559
1560
1561.. function:: reversed(seq)
1562
1563   Return a reverse :term:`iterator`.  *seq* must be an object which has
1564   a :meth:`__reversed__` method or supports the sequence protocol (the
1565   :meth:`__len__` method and the :meth:`__getitem__` method with integer
1566   arguments starting at ``0``).
1567
1568
1569.. function:: round(number, ndigits=None)
1570
1571   Return *number* rounded to *ndigits* precision after the decimal
1572   point.  If *ndigits* is omitted or is ``None``, it returns the
1573   nearest integer to its input.
1574
1575   For the built-in types supporting :func:`round`, values are rounded to the
1576   closest multiple of 10 to the power minus *ndigits*; if two multiples are
1577   equally close, rounding is done toward the even choice (so, for example,
1578   both ``round(0.5)`` and ``round(-0.5)`` are ``0``, and ``round(1.5)`` is
1579   ``2``).  Any integer value is valid for *ndigits* (positive, zero, or
1580   negative).  The return value is an integer if *ndigits* is omitted or
1581   ``None``.
1582   Otherwise, the return value has the same type as *number*.
1583
1584   For a general Python object ``number``, ``round`` delegates to
1585   ``number.__round__``.
1586
1587   .. note::
1588
1589      The behavior of :func:`round` for floats can be surprising: for example,
1590      ``round(2.675, 2)`` gives ``2.67`` instead of the expected ``2.68``.
1591      This is not a bug: it's a result of the fact that most decimal fractions
1592      can't be represented exactly as a float.  See :ref:`tut-fp-issues` for
1593      more information.
1594
1595
1596.. _func-set:
1597.. class:: set()
1598           set(iterable)
1599   :noindex:
1600
1601   Return a new :class:`set` object, optionally with elements taken from
1602   *iterable*.  ``set`` is a built-in class.  See :class:`set` and
1603   :ref:`types-set` for documentation about this class.
1604
1605   For other containers see the built-in :class:`frozenset`, :class:`list`,
1606   :class:`tuple`, and :class:`dict` classes, as well as the :mod:`collections`
1607   module.
1608
1609
1610.. function:: setattr(object, name, value)
1611
1612   This is the counterpart of :func:`getattr`.  The arguments are an object, a
1613   string, and an arbitrary value.  The string may name an existing attribute or a
1614   new attribute.  The function assigns the value to the attribute, provided the
1615   object allows it.  For example, ``setattr(x, 'foobar', 123)`` is equivalent to
1616   ``x.foobar = 123``.
1617
1618   *name* need not be a Python identifier as defined in :ref:`identifiers`
1619   unless the object chooses to enforce that, for example in a custom
1620   :meth:`~object.__getattribute__` or via :attr:`~object.__slots__`.
1621   An attribute whose name is not an identifier will not be accessible using
1622   the dot notation, but is accessible through :func:`getattr` etc..
1623
1624   .. note::
1625
1626      Since :ref:`private name mangling <private-name-mangling>` happens at
1627      compilation time, one must manually mangle a private attribute's
1628      (attributes with two leading underscores) name in order to set it with
1629      :func:`setattr`.
1630
1631
1632.. class:: slice(stop)
1633           slice(start, stop, step=1)
1634
1635   Return a :term:`slice` object representing the set of indices specified by
1636   ``range(start, stop, step)``.  The *start* and *step* arguments default to
1637   ``None``.  Slice objects have read-only data attributes :attr:`~slice.start`,
1638   :attr:`~slice.stop`, and :attr:`~slice.step` which merely return the argument
1639   values (or their default).  They have no other explicit functionality;
1640   however, they are used by NumPy and other third-party packages.
1641   Slice objects are also generated when extended indexing syntax is used.  For
1642   example: ``a[start:stop:step]`` or ``a[start:stop, i]``.  See
1643   :func:`itertools.islice` for an alternate version that returns an iterator.
1644
1645
1646.. function:: sorted(iterable, /, *, key=None, reverse=False)
1647
1648   Return a new sorted list from the items in *iterable*.
1649
1650   Has two optional arguments which must be specified as keyword arguments.
1651
1652   *key* specifies a function of one argument that is used to extract a comparison
1653   key from each element in *iterable* (for example, ``key=str.lower``).  The
1654   default value is ``None`` (compare the elements directly).
1655
1656   *reverse* is a boolean value.  If set to ``True``, then the list elements are
1657   sorted as if each comparison were reversed.
1658
1659   Use :func:`functools.cmp_to_key` to convert an old-style *cmp* function to a
1660   *key* function.
1661
1662   The built-in :func:`sorted` function is guaranteed to be stable. A sort is
1663   stable if it guarantees not to change the relative order of elements that
1664   compare equal --- this is helpful for sorting in multiple passes (for
1665   example, sort by department, then by salary grade).
1666
1667   The sort algorithm uses only ``<`` comparisons between items.  While
1668   defining an :meth:`~object.__lt__` method will suffice for sorting,
1669   :PEP:`8` recommends that all six :ref:`rich comparisons
1670   <comparisons>` be implemented.  This will help avoid bugs when using
1671   the same data with other ordering tools such as :func:`max` that rely
1672   on a different underlying method.  Implementing all six comparisons
1673   also helps avoid confusion for mixed type comparisons which can call
1674   reflected the :meth:`~object.__gt__` method.
1675
1676   For sorting examples and a brief sorting tutorial, see :ref:`sortinghowto`.
1677
1678.. decorator:: staticmethod
1679
1680   Transform a method into a static method.
1681
1682   A static method does not receive an implicit first argument. To declare a static
1683   method, use this idiom::
1684
1685      class C:
1686          @staticmethod
1687          def f(arg1, arg2, argN): ...
1688
1689   The ``@staticmethod`` form is a function :term:`decorator` -- see
1690   :ref:`function` for details.
1691
1692   A static method can be called either on the class (such as ``C.f()``) or on
1693   an instance (such as ``C().f()``). Moreover, they can be called as regular
1694   functions (such as ``f()``).
1695
1696   Static methods in Python are similar to those found in Java or C++. Also, see
1697   :func:`classmethod` for a variant that is useful for creating alternate class
1698   constructors.
1699
1700   Like all decorators, it is also possible to call ``staticmethod`` as
1701   a regular function and do something with its result.  This is needed
1702   in some cases where you need a reference to a function from a class
1703   body and you want to avoid the automatic transformation to instance
1704   method.  For these cases, use this idiom::
1705
1706      def regular_function():
1707          ...
1708
1709      class C:
1710          method = staticmethod(regular_function)
1711
1712   For more information on static methods, see :ref:`types`.
1713
1714   .. versionchanged:: 3.10
1715      Static methods now inherit the method attributes (``__module__``,
1716      ``__name__``, ``__qualname__``, ``__doc__`` and ``__annotations__``),
1717      have a new ``__wrapped__`` attribute, and are now callable as regular
1718      functions.
1719
1720
1721.. index::
1722   single: string; str() (built-in function)
1723
1724.. _func-str:
1725.. class:: str(object='')
1726           str(object=b'', encoding='utf-8', errors='strict')
1727   :noindex:
1728
1729   Return a :class:`str` version of *object*.  See :func:`str` for details.
1730
1731   ``str`` is the built-in string :term:`class`.  For general information
1732   about strings, see :ref:`textseq`.
1733
1734
1735.. function:: sum(iterable, /, start=0)
1736
1737   Sums *start* and the items of an *iterable* from left to right and returns the
1738   total.  The *iterable*'s items are normally numbers, and the start value is not
1739   allowed to be a string.
1740
1741   For some use cases, there are good alternatives to :func:`sum`.
1742   The preferred, fast way to concatenate a sequence of strings is by calling
1743   ``''.join(sequence)``.  To add floating point values with extended precision,
1744   see :func:`math.fsum`\.  To concatenate a series of iterables, consider using
1745   :func:`itertools.chain`.
1746
1747   .. versionchanged:: 3.8
1748      The *start* parameter can be specified as a keyword argument.
1749
1750.. class:: super()
1751           super(type, object_or_type=None)
1752
1753   Return a proxy object that delegates method calls to a parent or sibling
1754   class of *type*.  This is useful for accessing inherited methods that have
1755   been overridden in a class.
1756
1757   The *object_or_type* determines the :term:`method resolution order`
1758   to be searched.  The search starts from the class right after the
1759   *type*.
1760
1761   For example, if :attr:`~class.__mro__` of *object_or_type* is
1762   ``D -> B -> C -> A -> object`` and the value of *type* is ``B``,
1763   then :func:`super` searches ``C -> A -> object``.
1764
1765   The :attr:`~class.__mro__` attribute of the *object_or_type* lists the method
1766   resolution search order used by both :func:`getattr` and :func:`super`.  The
1767   attribute is dynamic and can change whenever the inheritance hierarchy is
1768   updated.
1769
1770   If the second argument is omitted, the super object returned is unbound.  If
1771   the second argument is an object, ``isinstance(obj, type)`` must be true.  If
1772   the second argument is a type, ``issubclass(type2, type)`` must be true (this
1773   is useful for classmethods).
1774
1775   There are two typical use cases for *super*.  In a class hierarchy with
1776   single inheritance, *super* can be used to refer to parent classes without
1777   naming them explicitly, thus making the code more maintainable.  This use
1778   closely parallels the use of *super* in other programming languages.
1779
1780   The second use case is to support cooperative multiple inheritance in a
1781   dynamic execution environment.  This use case is unique to Python and is
1782   not found in statically compiled languages or languages that only support
1783   single inheritance.  This makes it possible to implement "diamond diagrams"
1784   where multiple base classes implement the same method.  Good design dictates
1785   that such implementations have the same calling signature in every case (because the
1786   order of calls is determined at runtime, because that order adapts
1787   to changes in the class hierarchy, and because that order can include
1788   sibling classes that are unknown prior to runtime).
1789
1790   For both use cases, a typical superclass call looks like this::
1791
1792      class C(B):
1793          def method(self, arg):
1794              super().method(arg)    # This does the same thing as:
1795                                     # super(C, self).method(arg)
1796
1797   In addition to method lookups, :func:`super` also works for attribute
1798   lookups.  One possible use case for this is calling :term:`descriptors <descriptor>`
1799   in a parent or sibling class.
1800
1801   Note that :func:`super` is implemented as part of the binding process for
1802   explicit dotted attribute lookups such as ``super().__getitem__(name)``.
1803   It does so by implementing its own :meth:`__getattribute__` method for searching
1804   classes in a predictable order that supports cooperative multiple inheritance.
1805   Accordingly, :func:`super` is undefined for implicit lookups using statements or
1806   operators such as ``super()[name]``.
1807
1808   Also note that, aside from the zero argument form, :func:`super` is not
1809   limited to use inside methods.  The two argument form specifies the
1810   arguments exactly and makes the appropriate references.  The zero
1811   argument form only works inside a class definition, as the compiler fills
1812   in the necessary details to correctly retrieve the class being defined,
1813   as well as accessing the current instance for ordinary methods.
1814
1815   For practical suggestions on how to design cooperative classes using
1816   :func:`super`, see `guide to using super()
1817   <https://rhettinger.wordpress.com/2011/05/26/super-considered-super/>`_.
1818
1819
1820.. _func-tuple:
1821.. class:: tuple()
1822           tuple(iterable)
1823   :noindex:
1824
1825   Rather than being a function, :class:`tuple` is actually an immutable
1826   sequence type, as documented in :ref:`typesseq-tuple` and :ref:`typesseq`.
1827
1828
1829.. class:: type(object)
1830           type(name, bases, dict, **kwds)
1831
1832   .. index:: pair: object; type
1833
1834   With one argument, return the type of an *object*.  The return value is a
1835   type object and generally the same object as returned by
1836   :attr:`object.__class__ <instance.__class__>`.
1837
1838   The :func:`isinstance` built-in function is recommended for testing the type
1839   of an object, because it takes subclasses into account.
1840
1841
1842   With three arguments, return a new type object.  This is essentially a
1843   dynamic form of the :keyword:`class` statement. The *name* string is
1844   the class name and becomes the :attr:`~definition.__name__` attribute.
1845   The *bases* tuple contains the base classes and becomes the
1846   :attr:`~class.__bases__` attribute; if empty, :class:`object`, the
1847   ultimate base of all classes, is added.  The *dict* dictionary contains
1848   attribute and method definitions for the class body; it may be copied
1849   or wrapped before becoming the :attr:`~object.__dict__` attribute.
1850   The following two statements create identical :class:`type` objects:
1851
1852      >>> class X:
1853      ...     a = 1
1854      ...
1855      >>> X = type('X', (), dict(a=1))
1856
1857   See also :ref:`bltin-type-objects`.
1858
1859   Keyword arguments provided to the three argument form are passed to the
1860   appropriate metaclass machinery (usually :meth:`~object.__init_subclass__`)
1861   in the same way that keywords in a class
1862   definition (besides *metaclass*) would.
1863
1864   See also :ref:`class-customization`.
1865
1866   .. versionchanged:: 3.6
1867      Subclasses of :class:`type` which don't override ``type.__new__`` may no
1868      longer use the one-argument form to get the type of an object.
1869
1870.. function:: vars()
1871              vars(object)
1872
1873   Return the :attr:`~object.__dict__` attribute for a module, class, instance,
1874   or any other object with a :attr:`~object.__dict__` attribute.
1875
1876   Objects such as modules and instances have an updateable :attr:`~object.__dict__`
1877   attribute; however, other objects may have write restrictions on their
1878   :attr:`~object.__dict__` attributes (for example, classes use a
1879   :class:`types.MappingProxyType` to prevent direct dictionary updates).
1880
1881   Without an argument, :func:`vars` acts like :func:`locals`.  Note, the
1882   locals dictionary is only useful for reads since updates to the locals
1883   dictionary are ignored.
1884
1885   A :exc:`TypeError` exception is raised if an object is specified but
1886   it doesn't have a :attr:`~object.__dict__` attribute (for example, if
1887   its class defines the :attr:`~object.__slots__` attribute).
1888
1889.. function:: zip(*iterables, strict=False)
1890
1891   Iterate over several iterables in parallel, producing tuples with an item
1892   from each one.
1893
1894   Example::
1895
1896      >>> for item in zip([1, 2, 3], ['sugar', 'spice', 'everything nice']):
1897      ...     print(item)
1898      ...
1899      (1, 'sugar')
1900      (2, 'spice')
1901      (3, 'everything nice')
1902
1903   More formally: :func:`zip` returns an iterator of tuples, where the *i*-th
1904   tuple contains the *i*-th element from each of the argument iterables.
1905
1906   Another way to think of :func:`zip` is that it turns rows into columns, and
1907   columns into rows.  This is similar to `transposing a matrix
1908   <https://en.wikipedia.org/wiki/Transpose>`_.
1909
1910   :func:`zip` is lazy: The elements won't be processed until the iterable is
1911   iterated on, e.g. by a :keyword:`!for` loop or by wrapping in a
1912   :class:`list`.
1913
1914   One thing to consider is that the iterables passed to :func:`zip` could have
1915   different lengths; sometimes by design, and sometimes because of a bug in
1916   the code that prepared these iterables.  Python offers three different
1917   approaches to dealing with this issue:
1918
1919   * By default, :func:`zip` stops when the shortest iterable is exhausted.
1920     It will ignore the remaining items in the longer iterables, cutting off
1921     the result to the length of the shortest iterable::
1922
1923        >>> list(zip(range(3), ['fee', 'fi', 'fo', 'fum']))
1924        [(0, 'fee'), (1, 'fi'), (2, 'fo')]
1925
1926   * :func:`zip` is often used in cases where the iterables are assumed to be
1927     of equal length.  In such cases, it's recommended to use the ``strict=True``
1928     option. Its output is the same as regular :func:`zip`::
1929
1930        >>> list(zip(('a', 'b', 'c'), (1, 2, 3), strict=True))
1931        [('a', 1), ('b', 2), ('c', 3)]
1932
1933     Unlike the default behavior, it raises a :exc:`ValueError` if one iterable
1934     is exhausted before the others:
1935
1936        >>> for item in zip(range(3), ['fee', 'fi', 'fo', 'fum'], strict=True):  # doctest: +SKIP
1937        ...     print(item)
1938        ...
1939        (0, 'fee')
1940        (1, 'fi')
1941        (2, 'fo')
1942        Traceback (most recent call last):
1943          ...
1944        ValueError: zip() argument 2 is longer than argument 1
1945
1946     ..
1947        This doctest is disabled because doctest does not support capturing
1948        output and exceptions in the same code unit.
1949        https://github.com/python/cpython/issues/65382
1950
1951     Without the ``strict=True`` argument, any bug that results in iterables of
1952     different lengths will be silenced, possibly manifesting as a hard-to-find
1953     bug in another part of the program.
1954
1955   * Shorter iterables can be padded with a constant value to make all the
1956     iterables have the same length.  This is done by
1957     :func:`itertools.zip_longest`.
1958
1959   Edge cases: With a single iterable argument, :func:`zip` returns an
1960   iterator of 1-tuples.  With no arguments, it returns an empty iterator.
1961
1962   Tips and tricks:
1963
1964   * The left-to-right evaluation order of the iterables is guaranteed. This
1965     makes possible an idiom for clustering a data series into n-length groups
1966     using ``zip(*[iter(s)]*n, strict=True)``.  This repeats the *same* iterator
1967     ``n`` times so that each output tuple has the result of ``n`` calls to the
1968     iterator. This has the effect of dividing the input into n-length chunks.
1969
1970   * :func:`zip` in conjunction with the ``*`` operator can be used to unzip a
1971     list::
1972
1973        >>> x = [1, 2, 3]
1974        >>> y = [4, 5, 6]
1975        >>> list(zip(x, y))
1976        [(1, 4), (2, 5), (3, 6)]
1977        >>> x2, y2 = zip(*zip(x, y))
1978        >>> x == list(x2) and y == list(y2)
1979        True
1980
1981   .. versionchanged:: 3.10
1982      Added the ``strict`` argument.
1983
1984
1985.. function:: __import__(name, globals=None, locals=None, fromlist=(), level=0)
1986
1987   .. index::
1988      pair: statement; import
1989      pair: module; builtins
1990
1991   .. note::
1992
1993      This is an advanced function that is not needed in everyday Python
1994      programming, unlike :func:`importlib.import_module`.
1995
1996   This function is invoked by the :keyword:`import` statement.  It can be
1997   replaced (by importing the :mod:`builtins` module and assigning to
1998   ``builtins.__import__``) in order to change semantics of the
1999   :keyword:`!import` statement, but doing so is **strongly** discouraged as it
2000   is usually simpler to use import hooks (see :pep:`302`) to attain the same
2001   goals and does not cause issues with code which assumes the default import
2002   implementation is in use.  Direct use of :func:`__import__` is also
2003   discouraged in favor of :func:`importlib.import_module`.
2004
2005   The function imports the module *name*, potentially using the given *globals*
2006   and *locals* to determine how to interpret the name in a package context.
2007   The *fromlist* gives the names of objects or submodules that should be
2008   imported from the module given by *name*.  The standard implementation does
2009   not use its *locals* argument at all and uses its *globals* only to
2010   determine the package context of the :keyword:`import` statement.
2011
2012   *level* specifies whether to use absolute or relative imports. ``0`` (the
2013   default) means only perform absolute imports.  Positive values for
2014   *level* indicate the number of parent directories to search relative to the
2015   directory of the module calling :func:`__import__` (see :pep:`328` for the
2016   details).
2017
2018   When the *name* variable is of the form ``package.module``, normally, the
2019   top-level package (the name up till the first dot) is returned, *not* the
2020   module named by *name*.  However, when a non-empty *fromlist* argument is
2021   given, the module named by *name* is returned.
2022
2023   For example, the statement ``import spam`` results in bytecode resembling the
2024   following code::
2025
2026      spam = __import__('spam', globals(), locals(), [], 0)
2027
2028   The statement ``import spam.ham`` results in this call::
2029
2030      spam = __import__('spam.ham', globals(), locals(), [], 0)
2031
2032   Note how :func:`__import__` returns the toplevel module here because this is
2033   the object that is bound to a name by the :keyword:`import` statement.
2034
2035   On the other hand, the statement ``from spam.ham import eggs, sausage as
2036   saus`` results in ::
2037
2038      _temp = __import__('spam.ham', globals(), locals(), ['eggs', 'sausage'], 0)
2039      eggs = _temp.eggs
2040      saus = _temp.sausage
2041
2042   Here, the ``spam.ham`` module is returned from :func:`__import__`.  From this
2043   object, the names to import are retrieved and assigned to their respective
2044   names.
2045
2046   If you simply want to import a module (potentially within a package) by name,
2047   use :func:`importlib.import_module`.
2048
2049   .. versionchanged:: 3.3
2050      Negative values for *level* are no longer supported (which also changes
2051      the default value to 0).
2052
2053   .. versionchanged:: 3.9
2054      When the command line options :option:`-E` or :option:`-I` are being used,
2055      the environment variable :envvar:`PYTHONCASEOK` is now ignored.
2056
2057.. rubric:: Footnotes
2058
2059.. [#] Note that the parser only accepts the Unix-style end of line convention.
2060   If you are reading the code from a file, make sure to use newline conversion
2061   mode to convert Windows or Mac-style newlines.
2062