17db96d56Sopenharmony_ci.. XXX document all delegations to __special__ methods
27db96d56Sopenharmony_ci.. _built-in-funcs:
37db96d56Sopenharmony_ci
47db96d56Sopenharmony_ciBuilt-in Functions
57db96d56Sopenharmony_ci==================
67db96d56Sopenharmony_ci
77db96d56Sopenharmony_ciThe Python interpreter has a number of functions and types built into it that
87db96d56Sopenharmony_ciare always available.  They are listed here in alphabetical order.
97db96d56Sopenharmony_ci
107db96d56Sopenharmony_ci+---------------------------------------------------------------------------------------------------+
117db96d56Sopenharmony_ci|                                        Built-in Functions                                         |
127db96d56Sopenharmony_ci+=========================+=======================+=======================+=========================+
137db96d56Sopenharmony_ci| |  **A**                | |  **E**              | |  **L**              | |  **R**                |
147db96d56Sopenharmony_ci| |  :func:`abs`          | |  :func:`enumerate`  | |  :func:`len`        | |  |func-range|_        |
157db96d56Sopenharmony_ci| |  :func:`aiter`        | |  :func:`eval`       | |  |func-list|_       | |  :func:`repr`         |
167db96d56Sopenharmony_ci| |  :func:`all`          | |  :func:`exec`       | |  :func:`locals`     | |  :func:`reversed`     |
177db96d56Sopenharmony_ci| |  :func:`any`          | |                     | |                     | |  :func:`round`        |
187db96d56Sopenharmony_ci| |  :func:`anext`        | |  **F**              | |  **M**              | |                       |
197db96d56Sopenharmony_ci| |  :func:`ascii`        | |  :func:`filter`     | |  :func:`map`        | |  **S**                |
207db96d56Sopenharmony_ci| |                       | |  :func:`float`      | |  :func:`max`        | |  |func-set|_          |
217db96d56Sopenharmony_ci| |  **B**                | |  :func:`format`     | |  |func-memoryview|_ | |  :func:`setattr`      |
227db96d56Sopenharmony_ci| |  :func:`bin`          | |  |func-frozenset|_  | |  :func:`min`        | |  :func:`slice`        |
237db96d56Sopenharmony_ci| |  :func:`bool`         | |                     | |                     | |  :func:`sorted`       |
247db96d56Sopenharmony_ci| |  :func:`breakpoint`   | |  **G**              | |  **N**              | |  :func:`staticmethod` |
257db96d56Sopenharmony_ci| |  |func-bytearray|_    | |  :func:`getattr`    | |  :func:`next`       | |  |func-str|_          |
267db96d56Sopenharmony_ci| |  |func-bytes|_        | |  :func:`globals`    | |                     | |  :func:`sum`          |
277db96d56Sopenharmony_ci| |                       | |                     | |  **O**              | |  :func:`super`        |
287db96d56Sopenharmony_ci| |  **C**                | |  **H**              | |  :func:`object`     | |                       |
297db96d56Sopenharmony_ci| |  :func:`callable`     | |  :func:`hasattr`    | |  :func:`oct`        | |  **T**                |
307db96d56Sopenharmony_ci| |  :func:`chr`          | |  :func:`hash`       | |  :func:`open`       | |  |func-tuple|_        |
317db96d56Sopenharmony_ci| |  :func:`classmethod`  | |  :func:`help`       | |  :func:`ord`        | |  :func:`type`         |
327db96d56Sopenharmony_ci| |  :func:`compile`      | |  :func:`hex`        | |                     | |                       |
337db96d56Sopenharmony_ci| |  :func:`complex`      | |                     | |  **P**              | |  **V**                |
347db96d56Sopenharmony_ci| |                       | |  **I**              | |  :func:`pow`        | |  :func:`vars`         |
357db96d56Sopenharmony_ci| |  **D**                | |  :func:`id`         | |  :func:`print`      | |                       |
367db96d56Sopenharmony_ci| |  :func:`delattr`      | |  :func:`input`      | |  :func:`property`   | |  **Z**                |
377db96d56Sopenharmony_ci| |  |func-dict|_         | |  :func:`int`        | |                     | |  :func:`zip`          |
387db96d56Sopenharmony_ci| |  :func:`dir`          | |  :func:`isinstance` | |                     | |                       |
397db96d56Sopenharmony_ci| |  :func:`divmod`       | |  :func:`issubclass` | |                     | |  **_**                |
407db96d56Sopenharmony_ci| |                       | |  :func:`iter`       | |                     | |  :func:`__import__`   |
417db96d56Sopenharmony_ci+-------------------------+-----------------------+-----------------------+-------------------------+
427db96d56Sopenharmony_ci
437db96d56Sopenharmony_ci.. using :func:`dict` would create a link to another page, so local targets are
447db96d56Sopenharmony_ci   used, with replacement texts to make the output in the table consistent
457db96d56Sopenharmony_ci
467db96d56Sopenharmony_ci.. |func-dict| replace:: ``dict()``
477db96d56Sopenharmony_ci.. |func-frozenset| replace:: ``frozenset()``
487db96d56Sopenharmony_ci.. |func-memoryview| replace:: ``memoryview()``
497db96d56Sopenharmony_ci.. |func-set| replace:: ``set()``
507db96d56Sopenharmony_ci.. |func-list| replace:: ``list()``
517db96d56Sopenharmony_ci.. |func-str| replace:: ``str()``
527db96d56Sopenharmony_ci.. |func-tuple| replace:: ``tuple()``
537db96d56Sopenharmony_ci.. |func-range| replace:: ``range()``
547db96d56Sopenharmony_ci.. |func-bytearray| replace:: ``bytearray()``
557db96d56Sopenharmony_ci.. |func-bytes| replace:: ``bytes()``
567db96d56Sopenharmony_ci
577db96d56Sopenharmony_ci.. function:: abs(x)
587db96d56Sopenharmony_ci
597db96d56Sopenharmony_ci   Return the absolute value of a number.  The argument may be an
607db96d56Sopenharmony_ci   integer, a floating point number, or an object implementing :meth:`__abs__`.
617db96d56Sopenharmony_ci   If the argument is a complex number, its magnitude is returned.
627db96d56Sopenharmony_ci
637db96d56Sopenharmony_ci
647db96d56Sopenharmony_ci.. function:: aiter(async_iterable)
657db96d56Sopenharmony_ci
667db96d56Sopenharmony_ci   Return an :term:`asynchronous iterator` for an :term:`asynchronous iterable`.
677db96d56Sopenharmony_ci   Equivalent to calling ``x.__aiter__()``.
687db96d56Sopenharmony_ci
697db96d56Sopenharmony_ci   Note: Unlike :func:`iter`, :func:`aiter` has no 2-argument variant.
707db96d56Sopenharmony_ci
717db96d56Sopenharmony_ci   .. versionadded:: 3.10
727db96d56Sopenharmony_ci
737db96d56Sopenharmony_ci.. function:: all(iterable)
747db96d56Sopenharmony_ci
757db96d56Sopenharmony_ci   Return ``True`` if all elements of the *iterable* are true (or if the iterable
767db96d56Sopenharmony_ci   is empty).  Equivalent to::
777db96d56Sopenharmony_ci
787db96d56Sopenharmony_ci      def all(iterable):
797db96d56Sopenharmony_ci          for element in iterable:
807db96d56Sopenharmony_ci              if not element:
817db96d56Sopenharmony_ci                  return False
827db96d56Sopenharmony_ci          return True
837db96d56Sopenharmony_ci
847db96d56Sopenharmony_ci
857db96d56Sopenharmony_ci.. awaitablefunction:: anext(async_iterator)
867db96d56Sopenharmony_ci                       anext(async_iterator, default)
877db96d56Sopenharmony_ci
887db96d56Sopenharmony_ci   When awaited, return the next item from the given :term:`asynchronous
897db96d56Sopenharmony_ci   iterator`, or *default* if given and the iterator is exhausted.
907db96d56Sopenharmony_ci
917db96d56Sopenharmony_ci   This is the async variant of the :func:`next` builtin, and behaves
927db96d56Sopenharmony_ci   similarly.
937db96d56Sopenharmony_ci
947db96d56Sopenharmony_ci   This calls the :meth:`~object.__anext__` method of *async_iterator*,
957db96d56Sopenharmony_ci   returning an :term:`awaitable`. Awaiting this returns the next value of the
967db96d56Sopenharmony_ci   iterator. If *default* is given, it is returned if the iterator is exhausted,
977db96d56Sopenharmony_ci   otherwise :exc:`StopAsyncIteration` is raised.
987db96d56Sopenharmony_ci
997db96d56Sopenharmony_ci   .. versionadded:: 3.10
1007db96d56Sopenharmony_ci
1017db96d56Sopenharmony_ci.. function:: any(iterable)
1027db96d56Sopenharmony_ci
1037db96d56Sopenharmony_ci   Return ``True`` if any element of the *iterable* is true.  If the iterable
1047db96d56Sopenharmony_ci   is empty, return ``False``.  Equivalent to::
1057db96d56Sopenharmony_ci
1067db96d56Sopenharmony_ci      def any(iterable):
1077db96d56Sopenharmony_ci          for element in iterable:
1087db96d56Sopenharmony_ci              if element:
1097db96d56Sopenharmony_ci                  return True
1107db96d56Sopenharmony_ci          return False
1117db96d56Sopenharmony_ci
1127db96d56Sopenharmony_ci
1137db96d56Sopenharmony_ci.. function:: ascii(object)
1147db96d56Sopenharmony_ci
1157db96d56Sopenharmony_ci   As :func:`repr`, return a string containing a printable representation of an
1167db96d56Sopenharmony_ci   object, but escape the non-ASCII characters in the string returned by
1177db96d56Sopenharmony_ci   :func:`repr` using ``\x``, ``\u``, or ``\U`` escapes.  This generates a string
1187db96d56Sopenharmony_ci   similar to that returned by :func:`repr` in Python 2.
1197db96d56Sopenharmony_ci
1207db96d56Sopenharmony_ci
1217db96d56Sopenharmony_ci.. function:: bin(x)
1227db96d56Sopenharmony_ci
1237db96d56Sopenharmony_ci   Convert an integer number to a binary string prefixed with "0b". The result
1247db96d56Sopenharmony_ci   is a valid Python expression. If *x* is not a Python :class:`int` object, it
1257db96d56Sopenharmony_ci   has to define an :meth:`__index__` method that returns an integer. Some
1267db96d56Sopenharmony_ci   examples:
1277db96d56Sopenharmony_ci
1287db96d56Sopenharmony_ci      >>> bin(3)
1297db96d56Sopenharmony_ci      '0b11'
1307db96d56Sopenharmony_ci      >>> bin(-10)
1317db96d56Sopenharmony_ci      '-0b1010'
1327db96d56Sopenharmony_ci
1337db96d56Sopenharmony_ci   If the prefix "0b" is desired or not, you can use either of the following ways.
1347db96d56Sopenharmony_ci
1357db96d56Sopenharmony_ci      >>> format(14, '#b'), format(14, 'b')
1367db96d56Sopenharmony_ci      ('0b1110', '1110')
1377db96d56Sopenharmony_ci      >>> f'{14:#b}', f'{14:b}'
1387db96d56Sopenharmony_ci      ('0b1110', '1110')
1397db96d56Sopenharmony_ci
1407db96d56Sopenharmony_ci   See also :func:`format` for more information.
1417db96d56Sopenharmony_ci
1427db96d56Sopenharmony_ci
1437db96d56Sopenharmony_ci.. class:: bool(x=False)
1447db96d56Sopenharmony_ci
1457db96d56Sopenharmony_ci   Return a Boolean value, i.e. one of ``True`` or ``False``.  *x* is converted
1467db96d56Sopenharmony_ci   using the standard :ref:`truth testing procedure <truth>`.  If *x* is false
1477db96d56Sopenharmony_ci   or omitted, this returns ``False``; otherwise, it returns ``True``.  The
1487db96d56Sopenharmony_ci   :class:`bool` class is a subclass of :class:`int` (see :ref:`typesnumeric`).
1497db96d56Sopenharmony_ci   It cannot be subclassed further.  Its only instances are ``False`` and
1507db96d56Sopenharmony_ci   ``True`` (see :ref:`bltin-boolean-values`).
1517db96d56Sopenharmony_ci
1527db96d56Sopenharmony_ci   .. index:: pair: Boolean; type
1537db96d56Sopenharmony_ci
1547db96d56Sopenharmony_ci   .. versionchanged:: 3.7
1557db96d56Sopenharmony_ci      *x* is now a positional-only parameter.
1567db96d56Sopenharmony_ci
1577db96d56Sopenharmony_ci.. function:: breakpoint(*args, **kws)
1587db96d56Sopenharmony_ci
1597db96d56Sopenharmony_ci   This function drops you into the debugger at the call site.  Specifically,
1607db96d56Sopenharmony_ci   it calls :func:`sys.breakpointhook`, passing ``args`` and ``kws`` straight
1617db96d56Sopenharmony_ci   through.  By default, ``sys.breakpointhook()`` calls
1627db96d56Sopenharmony_ci   :func:`pdb.set_trace()` expecting no arguments.  In this case, it is
1637db96d56Sopenharmony_ci   purely a convenience function so you don't have to explicitly import
1647db96d56Sopenharmony_ci   :mod:`pdb` or type as much code to enter the debugger.  However,
1657db96d56Sopenharmony_ci   :func:`sys.breakpointhook` can be set to some other function and
1667db96d56Sopenharmony_ci   :func:`breakpoint` will automatically call that, allowing you to drop into
1677db96d56Sopenharmony_ci   the debugger of choice.
1687db96d56Sopenharmony_ci   If :func:`sys.breakpointhook` is not accessible, this function will
1697db96d56Sopenharmony_ci   raise :exc:`RuntimeError`.
1707db96d56Sopenharmony_ci
1717db96d56Sopenharmony_ci   By default, the behavior of :func:`breakpoint` can be changed with
1727db96d56Sopenharmony_ci   the :envvar:`PYTHONBREAKPOINT` environment variable.
1737db96d56Sopenharmony_ci   See :func:`sys.breakpointhook` for usage details.
1747db96d56Sopenharmony_ci
1757db96d56Sopenharmony_ci   Note that this is not guaranteed if :func:`sys.breakpointhook`
1767db96d56Sopenharmony_ci   has been replaced.
1777db96d56Sopenharmony_ci
1787db96d56Sopenharmony_ci   .. audit-event:: builtins.breakpoint breakpointhook breakpoint
1797db96d56Sopenharmony_ci
1807db96d56Sopenharmony_ci   .. versionadded:: 3.7
1817db96d56Sopenharmony_ci
1827db96d56Sopenharmony_ci.. _func-bytearray:
1837db96d56Sopenharmony_ci.. class:: bytearray(source=b'')
1847db96d56Sopenharmony_ci           bytearray(source, encoding)
1857db96d56Sopenharmony_ci           bytearray(source, encoding, errors)
1867db96d56Sopenharmony_ci   :noindex:
1877db96d56Sopenharmony_ci
1887db96d56Sopenharmony_ci   Return a new array of bytes.  The :class:`bytearray` class is a mutable
1897db96d56Sopenharmony_ci   sequence of integers in the range 0 <= x < 256.  It has most of the usual
1907db96d56Sopenharmony_ci   methods of mutable sequences, described in :ref:`typesseq-mutable`, as well
1917db96d56Sopenharmony_ci   as most methods that the :class:`bytes` type has, see :ref:`bytes-methods`.
1927db96d56Sopenharmony_ci
1937db96d56Sopenharmony_ci   The optional *source* parameter can be used to initialize the array in a few
1947db96d56Sopenharmony_ci   different ways:
1957db96d56Sopenharmony_ci
1967db96d56Sopenharmony_ci   * If it is a *string*, you must also give the *encoding* (and optionally,
1977db96d56Sopenharmony_ci     *errors*) parameters; :func:`bytearray` then converts the string to
1987db96d56Sopenharmony_ci     bytes using :meth:`str.encode`.
1997db96d56Sopenharmony_ci
2007db96d56Sopenharmony_ci   * If it is an *integer*, the array will have that size and will be
2017db96d56Sopenharmony_ci     initialized with null bytes.
2027db96d56Sopenharmony_ci
2037db96d56Sopenharmony_ci   * If it is an object conforming to the :ref:`buffer interface <bufferobjects>`,
2047db96d56Sopenharmony_ci     a read-only buffer of the object will be used to initialize the bytes array.
2057db96d56Sopenharmony_ci
2067db96d56Sopenharmony_ci   * If it is an *iterable*, it must be an iterable of integers in the range
2077db96d56Sopenharmony_ci     ``0 <= x < 256``, which are used as the initial contents of the array.
2087db96d56Sopenharmony_ci
2097db96d56Sopenharmony_ci   Without an argument, an array of size 0 is created.
2107db96d56Sopenharmony_ci
2117db96d56Sopenharmony_ci   See also :ref:`binaryseq` and :ref:`typebytearray`.
2127db96d56Sopenharmony_ci
2137db96d56Sopenharmony_ci
2147db96d56Sopenharmony_ci.. _func-bytes:
2157db96d56Sopenharmony_ci.. class:: bytes(source=b'')
2167db96d56Sopenharmony_ci           bytes(source, encoding)
2177db96d56Sopenharmony_ci           bytes(source, encoding, errors)
2187db96d56Sopenharmony_ci   :noindex:
2197db96d56Sopenharmony_ci
2207db96d56Sopenharmony_ci   Return a new "bytes" object which is an immutable sequence of integers in
2217db96d56Sopenharmony_ci   the range ``0 <= x < 256``.  :class:`bytes` is an immutable version of
2227db96d56Sopenharmony_ci   :class:`bytearray` -- it has the same non-mutating methods and the same
2237db96d56Sopenharmony_ci   indexing and slicing behavior.
2247db96d56Sopenharmony_ci
2257db96d56Sopenharmony_ci   Accordingly, constructor arguments are interpreted as for :func:`bytearray`.
2267db96d56Sopenharmony_ci
2277db96d56Sopenharmony_ci   Bytes objects can also be created with literals, see :ref:`strings`.
2287db96d56Sopenharmony_ci
2297db96d56Sopenharmony_ci   See also :ref:`binaryseq`, :ref:`typebytes`, and :ref:`bytes-methods`.
2307db96d56Sopenharmony_ci
2317db96d56Sopenharmony_ci
2327db96d56Sopenharmony_ci.. function:: callable(object)
2337db96d56Sopenharmony_ci
2347db96d56Sopenharmony_ci   Return :const:`True` if the *object* argument appears callable,
2357db96d56Sopenharmony_ci   :const:`False` if not.  If this returns ``True``, it is still possible that a
2367db96d56Sopenharmony_ci   call fails, but if it is ``False``, calling *object* will never succeed.
2377db96d56Sopenharmony_ci   Note that classes are callable (calling a class returns a new instance);
2387db96d56Sopenharmony_ci   instances are callable if their class has a :meth:`__call__` method.
2397db96d56Sopenharmony_ci
2407db96d56Sopenharmony_ci   .. versionadded:: 3.2
2417db96d56Sopenharmony_ci      This function was first removed in Python 3.0 and then brought back
2427db96d56Sopenharmony_ci      in Python 3.2.
2437db96d56Sopenharmony_ci
2447db96d56Sopenharmony_ci
2457db96d56Sopenharmony_ci.. function:: chr(i)
2467db96d56Sopenharmony_ci
2477db96d56Sopenharmony_ci   Return the string representing a character whose Unicode code point is the
2487db96d56Sopenharmony_ci   integer *i*.  For example, ``chr(97)`` returns the string ``'a'``, while
2497db96d56Sopenharmony_ci   ``chr(8364)`` returns the string ``'€'``. This is the inverse of :func:`ord`.
2507db96d56Sopenharmony_ci
2517db96d56Sopenharmony_ci   The valid range for the argument is from 0 through 1,114,111 (0x10FFFF in
2527db96d56Sopenharmony_ci   base 16).  :exc:`ValueError` will be raised if *i* is outside that range.
2537db96d56Sopenharmony_ci
2547db96d56Sopenharmony_ci
2557db96d56Sopenharmony_ci.. decorator:: classmethod
2567db96d56Sopenharmony_ci
2577db96d56Sopenharmony_ci   Transform a method into a class method.
2587db96d56Sopenharmony_ci
2597db96d56Sopenharmony_ci   A class method receives the class as an implicit first argument, just like an
2607db96d56Sopenharmony_ci   instance method receives the instance. To declare a class method, use this
2617db96d56Sopenharmony_ci   idiom::
2627db96d56Sopenharmony_ci
2637db96d56Sopenharmony_ci      class C:
2647db96d56Sopenharmony_ci          @classmethod
2657db96d56Sopenharmony_ci          def f(cls, arg1, arg2): ...
2667db96d56Sopenharmony_ci
2677db96d56Sopenharmony_ci   The ``@classmethod`` form is a function :term:`decorator` -- see
2687db96d56Sopenharmony_ci   :ref:`function` for details.
2697db96d56Sopenharmony_ci
2707db96d56Sopenharmony_ci   A class method can be called either on the class (such as ``C.f()``) or on an instance (such
2717db96d56Sopenharmony_ci   as ``C().f()``).  The instance is ignored except for its class. If a class
2727db96d56Sopenharmony_ci   method is called for a derived class, the derived class object is passed as the
2737db96d56Sopenharmony_ci   implied first argument.
2747db96d56Sopenharmony_ci
2757db96d56Sopenharmony_ci   Class methods are different than C++ or Java static methods. If you want those,
2767db96d56Sopenharmony_ci   see :func:`staticmethod` in this section.
2777db96d56Sopenharmony_ci   For more information on class methods, see :ref:`types`.
2787db96d56Sopenharmony_ci
2797db96d56Sopenharmony_ci   .. versionchanged:: 3.9
2807db96d56Sopenharmony_ci      Class methods can now wrap other :term:`descriptors <descriptor>` such as
2817db96d56Sopenharmony_ci      :func:`property`.
2827db96d56Sopenharmony_ci
2837db96d56Sopenharmony_ci   .. versionchanged:: 3.10
2847db96d56Sopenharmony_ci      Class methods now inherit the method attributes (``__module__``,
2857db96d56Sopenharmony_ci      ``__name__``, ``__qualname__``, ``__doc__`` and ``__annotations__``) and
2867db96d56Sopenharmony_ci      have a new ``__wrapped__`` attribute.
2877db96d56Sopenharmony_ci
2887db96d56Sopenharmony_ci   .. versionchanged:: 3.11
2897db96d56Sopenharmony_ci      Class methods can no longer wrap other :term:`descriptors <descriptor>` such as
2907db96d56Sopenharmony_ci      :func:`property`.
2917db96d56Sopenharmony_ci
2927db96d56Sopenharmony_ci
2937db96d56Sopenharmony_ci.. function:: compile(source, filename, mode, flags=0, dont_inherit=False, optimize=-1)
2947db96d56Sopenharmony_ci
2957db96d56Sopenharmony_ci   Compile the *source* into a code or AST object.  Code objects can be executed
2967db96d56Sopenharmony_ci   by :func:`exec` or :func:`eval`.  *source* can either be a normal string, a
2977db96d56Sopenharmony_ci   byte string, or an AST object.  Refer to the :mod:`ast` module documentation
2987db96d56Sopenharmony_ci   for information on how to work with AST objects.
2997db96d56Sopenharmony_ci
3007db96d56Sopenharmony_ci   The *filename* argument should give the file from which the code was read;
3017db96d56Sopenharmony_ci   pass some recognizable value if it wasn't read from a file (``'<string>'`` is
3027db96d56Sopenharmony_ci   commonly used).
3037db96d56Sopenharmony_ci
3047db96d56Sopenharmony_ci   The *mode* argument specifies what kind of code must be compiled; it can be
3057db96d56Sopenharmony_ci   ``'exec'`` if *source* consists of a sequence of statements, ``'eval'`` if it
3067db96d56Sopenharmony_ci   consists of a single expression, or ``'single'`` if it consists of a single
3077db96d56Sopenharmony_ci   interactive statement (in the latter case, expression statements that
3087db96d56Sopenharmony_ci   evaluate to something other than ``None`` will be printed).
3097db96d56Sopenharmony_ci
3107db96d56Sopenharmony_ci   The optional arguments *flags* and *dont_inherit* control which
3117db96d56Sopenharmony_ci   :ref:`compiler options <ast-compiler-flags>` should be activated
3127db96d56Sopenharmony_ci   and which :ref:`future features <future>` should be allowed. If neither
3137db96d56Sopenharmony_ci   is present (or both are zero) the code is compiled with the same flags that
3147db96d56Sopenharmony_ci   affect the code that is calling :func:`compile`. If the *flags*
3157db96d56Sopenharmony_ci   argument is given and *dont_inherit* is not (or is zero) then the compiler
3167db96d56Sopenharmony_ci   options and the future statements specified by the *flags* argument are used
3177db96d56Sopenharmony_ci   in addition to those that would be used anyway. If *dont_inherit* is a
3187db96d56Sopenharmony_ci   non-zero integer then the *flags* argument is it -- the flags (future
3197db96d56Sopenharmony_ci   features and compiler options) in the surrounding code are ignored.
3207db96d56Sopenharmony_ci
3217db96d56Sopenharmony_ci   Compiler options and future statements are specified by bits which can be
3227db96d56Sopenharmony_ci   bitwise ORed together to specify multiple options. The bitfield required to
3237db96d56Sopenharmony_ci   specify a given future feature can be found as the
3247db96d56Sopenharmony_ci   :attr:`~__future__._Feature.compiler_flag` attribute on the
3257db96d56Sopenharmony_ci   :class:`~__future__._Feature` instance in the :mod:`__future__` module.
3267db96d56Sopenharmony_ci   :ref:`Compiler flags <ast-compiler-flags>` can be found in :mod:`ast`
3277db96d56Sopenharmony_ci   module, with ``PyCF_`` prefix.
3287db96d56Sopenharmony_ci
3297db96d56Sopenharmony_ci   The argument *optimize* specifies the optimization level of the compiler; the
3307db96d56Sopenharmony_ci   default value of ``-1`` selects the optimization level of the interpreter as
3317db96d56Sopenharmony_ci   given by :option:`-O` options.  Explicit levels are ``0`` (no optimization;
3327db96d56Sopenharmony_ci   ``__debug__`` is true), ``1`` (asserts are removed, ``__debug__`` is false)
3337db96d56Sopenharmony_ci   or ``2`` (docstrings are removed too).
3347db96d56Sopenharmony_ci
3357db96d56Sopenharmony_ci   This function raises :exc:`SyntaxError` if the compiled source is invalid,
3367db96d56Sopenharmony_ci   and :exc:`ValueError` if the source contains null bytes.
3377db96d56Sopenharmony_ci
3387db96d56Sopenharmony_ci   If you want to parse Python code into its AST representation, see
3397db96d56Sopenharmony_ci   :func:`ast.parse`.
3407db96d56Sopenharmony_ci
3417db96d56Sopenharmony_ci   .. audit-event:: compile source,filename compile
3427db96d56Sopenharmony_ci
3437db96d56Sopenharmony_ci      Raises an :ref:`auditing event <auditing>` ``compile`` with arguments
3447db96d56Sopenharmony_ci      ``source`` and ``filename``. This event may also be raised by implicit
3457db96d56Sopenharmony_ci      compilation.
3467db96d56Sopenharmony_ci
3477db96d56Sopenharmony_ci   .. note::
3487db96d56Sopenharmony_ci
3497db96d56Sopenharmony_ci      When compiling a string with multi-line code in ``'single'`` or
3507db96d56Sopenharmony_ci      ``'eval'`` mode, input must be terminated by at least one newline
3517db96d56Sopenharmony_ci      character.  This is to facilitate detection of incomplete and complete
3527db96d56Sopenharmony_ci      statements in the :mod:`code` module.
3537db96d56Sopenharmony_ci
3547db96d56Sopenharmony_ci   .. warning::
3557db96d56Sopenharmony_ci
3567db96d56Sopenharmony_ci      It is possible to crash the Python interpreter with a
3577db96d56Sopenharmony_ci      sufficiently large/complex string when compiling to an AST
3587db96d56Sopenharmony_ci      object due to stack depth limitations in Python's AST compiler.
3597db96d56Sopenharmony_ci
3607db96d56Sopenharmony_ci   .. versionchanged:: 3.2
3617db96d56Sopenharmony_ci      Allowed use of Windows and Mac newlines.  Also, input in ``'exec'`` mode
3627db96d56Sopenharmony_ci      does not have to end in a newline anymore.  Added the *optimize* parameter.
3637db96d56Sopenharmony_ci
3647db96d56Sopenharmony_ci   .. versionchanged:: 3.5
3657db96d56Sopenharmony_ci      Previously, :exc:`TypeError` was raised when null bytes were encountered
3667db96d56Sopenharmony_ci      in *source*.
3677db96d56Sopenharmony_ci
3687db96d56Sopenharmony_ci   .. versionadded:: 3.8
3697db96d56Sopenharmony_ci      ``ast.PyCF_ALLOW_TOP_LEVEL_AWAIT`` can now be passed in flags to enable
3707db96d56Sopenharmony_ci      support for top-level ``await``, ``async for``, and ``async with``.
3717db96d56Sopenharmony_ci
3727db96d56Sopenharmony_ci
3737db96d56Sopenharmony_ci.. class:: complex(real=0, imag=0)
3747db96d56Sopenharmony_ci           complex(string)
3757db96d56Sopenharmony_ci
3767db96d56Sopenharmony_ci   Return a complex number with the value *real* + *imag*\*1j or convert a string
3777db96d56Sopenharmony_ci   or number to a complex number.  If the first parameter is a string, it will
3787db96d56Sopenharmony_ci   be interpreted as a complex number and the function must be called without a
3797db96d56Sopenharmony_ci   second parameter.  The second parameter can never be a string. Each argument
3807db96d56Sopenharmony_ci   may be any numeric type (including complex).  If *imag* is omitted, it
3817db96d56Sopenharmony_ci   defaults to zero and the constructor serves as a numeric conversion like
3827db96d56Sopenharmony_ci   :class:`int` and :class:`float`.  If both arguments are omitted, returns
3837db96d56Sopenharmony_ci   ``0j``.
3847db96d56Sopenharmony_ci
3857db96d56Sopenharmony_ci   For a general Python object ``x``, ``complex(x)`` delegates to
3867db96d56Sopenharmony_ci   ``x.__complex__()``.  If ``__complex__()`` is not defined then it falls back
3877db96d56Sopenharmony_ci   to :meth:`__float__`.  If ``__float__()`` is not defined then it falls back
3887db96d56Sopenharmony_ci   to :meth:`__index__`.
3897db96d56Sopenharmony_ci
3907db96d56Sopenharmony_ci   .. note::
3917db96d56Sopenharmony_ci
3927db96d56Sopenharmony_ci      When converting from a string, the string must not contain whitespace
3937db96d56Sopenharmony_ci      around the central ``+`` or ``-`` operator.  For example,
3947db96d56Sopenharmony_ci      ``complex('1+2j')`` is fine, but ``complex('1 + 2j')`` raises
3957db96d56Sopenharmony_ci      :exc:`ValueError`.
3967db96d56Sopenharmony_ci
3977db96d56Sopenharmony_ci   The complex type is described in :ref:`typesnumeric`.
3987db96d56Sopenharmony_ci
3997db96d56Sopenharmony_ci   .. versionchanged:: 3.6
4007db96d56Sopenharmony_ci      Grouping digits with underscores as in code literals is allowed.
4017db96d56Sopenharmony_ci
4027db96d56Sopenharmony_ci   .. versionchanged:: 3.8
4037db96d56Sopenharmony_ci      Falls back to :meth:`__index__` if :meth:`__complex__` and
4047db96d56Sopenharmony_ci      :meth:`__float__` are not defined.
4057db96d56Sopenharmony_ci
4067db96d56Sopenharmony_ci
4077db96d56Sopenharmony_ci.. function:: delattr(object, name)
4087db96d56Sopenharmony_ci
4097db96d56Sopenharmony_ci   This is a relative of :func:`setattr`.  The arguments are an object and a
4107db96d56Sopenharmony_ci   string.  The string must be the name of one of the object's attributes.  The
4117db96d56Sopenharmony_ci   function deletes the named attribute, provided the object allows it.  For
4127db96d56Sopenharmony_ci   example, ``delattr(x, 'foobar')`` is equivalent to ``del x.foobar``.
4137db96d56Sopenharmony_ci   *name* need not be a Python identifier (see :func:`setattr`).
4147db96d56Sopenharmony_ci
4157db96d56Sopenharmony_ci
4167db96d56Sopenharmony_ci.. _func-dict:
4177db96d56Sopenharmony_ci.. class:: dict(**kwarg)
4187db96d56Sopenharmony_ci           dict(mapping, **kwarg)
4197db96d56Sopenharmony_ci           dict(iterable, **kwarg)
4207db96d56Sopenharmony_ci   :noindex:
4217db96d56Sopenharmony_ci
4227db96d56Sopenharmony_ci   Create a new dictionary.  The :class:`dict` object is the dictionary class.
4237db96d56Sopenharmony_ci   See :class:`dict` and :ref:`typesmapping` for documentation about this class.
4247db96d56Sopenharmony_ci
4257db96d56Sopenharmony_ci   For other containers see the built-in :class:`list`, :class:`set`, and
4267db96d56Sopenharmony_ci   :class:`tuple` classes, as well as the :mod:`collections` module.
4277db96d56Sopenharmony_ci
4287db96d56Sopenharmony_ci
4297db96d56Sopenharmony_ci.. function:: dir()
4307db96d56Sopenharmony_ci              dir(object)
4317db96d56Sopenharmony_ci
4327db96d56Sopenharmony_ci   Without arguments, return the list of names in the current local scope.  With an
4337db96d56Sopenharmony_ci   argument, attempt to return a list of valid attributes for that object.
4347db96d56Sopenharmony_ci
4357db96d56Sopenharmony_ci   If the object has a method named :meth:`__dir__`, this method will be called and
4367db96d56Sopenharmony_ci   must return the list of attributes. This allows objects that implement a custom
4377db96d56Sopenharmony_ci   :func:`__getattr__` or :func:`__getattribute__` function to customize the way
4387db96d56Sopenharmony_ci   :func:`dir` reports their attributes.
4397db96d56Sopenharmony_ci
4407db96d56Sopenharmony_ci   If the object does not provide :meth:`__dir__`, the function tries its best to
4417db96d56Sopenharmony_ci   gather information from the object's :attr:`~object.__dict__` attribute, if defined, and
4427db96d56Sopenharmony_ci   from its type object.  The resulting list is not necessarily complete and may
4437db96d56Sopenharmony_ci   be inaccurate when the object has a custom :func:`__getattr__`.
4447db96d56Sopenharmony_ci
4457db96d56Sopenharmony_ci   The default :func:`dir` mechanism behaves differently with different types of
4467db96d56Sopenharmony_ci   objects, as it attempts to produce the most relevant, rather than complete,
4477db96d56Sopenharmony_ci   information:
4487db96d56Sopenharmony_ci
4497db96d56Sopenharmony_ci   * If the object is a module object, the list contains the names of the module's
4507db96d56Sopenharmony_ci     attributes.
4517db96d56Sopenharmony_ci
4527db96d56Sopenharmony_ci   * If the object is a type or class object, the list contains the names of its
4537db96d56Sopenharmony_ci     attributes, and recursively of the attributes of its bases.
4547db96d56Sopenharmony_ci
4557db96d56Sopenharmony_ci   * Otherwise, the list contains the object's attributes' names, the names of its
4567db96d56Sopenharmony_ci     class's attributes, and recursively of the attributes of its class's base
4577db96d56Sopenharmony_ci     classes.
4587db96d56Sopenharmony_ci
4597db96d56Sopenharmony_ci   The resulting list is sorted alphabetically.  For example:
4607db96d56Sopenharmony_ci
4617db96d56Sopenharmony_ci      >>> import struct
4627db96d56Sopenharmony_ci      >>> dir()   # show the names in the module namespace  # doctest: +SKIP
4637db96d56Sopenharmony_ci      ['__builtins__', '__name__', 'struct']
4647db96d56Sopenharmony_ci      >>> dir(struct)   # show the names in the struct module # doctest: +SKIP
4657db96d56Sopenharmony_ci      ['Struct', '__all__', '__builtins__', '__cached__', '__doc__', '__file__',
4667db96d56Sopenharmony_ci       '__initializing__', '__loader__', '__name__', '__package__',
4677db96d56Sopenharmony_ci       '_clearcache', 'calcsize', 'error', 'pack', 'pack_into',
4687db96d56Sopenharmony_ci       'unpack', 'unpack_from']
4697db96d56Sopenharmony_ci      >>> class Shape:
4707db96d56Sopenharmony_ci      ...     def __dir__(self):
4717db96d56Sopenharmony_ci      ...         return ['area', 'perimeter', 'location']
4727db96d56Sopenharmony_ci      >>> s = Shape()
4737db96d56Sopenharmony_ci      >>> dir(s)
4747db96d56Sopenharmony_ci      ['area', 'location', 'perimeter']
4757db96d56Sopenharmony_ci
4767db96d56Sopenharmony_ci   .. note::
4777db96d56Sopenharmony_ci
4787db96d56Sopenharmony_ci      Because :func:`dir` is supplied primarily as a convenience for use at an
4797db96d56Sopenharmony_ci      interactive prompt, it tries to supply an interesting set of names more
4807db96d56Sopenharmony_ci      than it tries to supply a rigorously or consistently defined set of names,
4817db96d56Sopenharmony_ci      and its detailed behavior may change across releases.  For example,
4827db96d56Sopenharmony_ci      metaclass attributes are not in the result list when the argument is a
4837db96d56Sopenharmony_ci      class.
4847db96d56Sopenharmony_ci
4857db96d56Sopenharmony_ci
4867db96d56Sopenharmony_ci.. function:: divmod(a, b)
4877db96d56Sopenharmony_ci
4887db96d56Sopenharmony_ci   Take two (non-complex) numbers as arguments and return a pair of numbers
4897db96d56Sopenharmony_ci   consisting of their quotient and remainder when using integer division.  With
4907db96d56Sopenharmony_ci   mixed operand types, the rules for binary arithmetic operators apply.  For
4917db96d56Sopenharmony_ci   integers, the result is the same as ``(a // b, a % b)``. For floating point
4927db96d56Sopenharmony_ci   numbers the result is ``(q, a % b)``, where *q* is usually ``math.floor(a /
4937db96d56Sopenharmony_ci   b)`` but may be 1 less than that.  In any case ``q * b + a % b`` is very
4947db96d56Sopenharmony_ci   close to *a*, if ``a % b`` is non-zero it has the same sign as *b*, and ``0
4957db96d56Sopenharmony_ci   <= abs(a % b) < abs(b)``.
4967db96d56Sopenharmony_ci
4977db96d56Sopenharmony_ci
4987db96d56Sopenharmony_ci.. function:: enumerate(iterable, start=0)
4997db96d56Sopenharmony_ci
5007db96d56Sopenharmony_ci   Return an enumerate object. *iterable* must be a sequence, an
5017db96d56Sopenharmony_ci   :term:`iterator`, or some other object which supports iteration.
5027db96d56Sopenharmony_ci   The :meth:`~iterator.__next__` method of the iterator returned by
5037db96d56Sopenharmony_ci   :func:`enumerate` returns a tuple containing a count (from *start* which
5047db96d56Sopenharmony_ci   defaults to 0) and the values obtained from iterating over *iterable*.
5057db96d56Sopenharmony_ci
5067db96d56Sopenharmony_ci      >>> seasons = ['Spring', 'Summer', 'Fall', 'Winter']
5077db96d56Sopenharmony_ci      >>> list(enumerate(seasons))
5087db96d56Sopenharmony_ci      [(0, 'Spring'), (1, 'Summer'), (2, 'Fall'), (3, 'Winter')]
5097db96d56Sopenharmony_ci      >>> list(enumerate(seasons, start=1))
5107db96d56Sopenharmony_ci      [(1, 'Spring'), (2, 'Summer'), (3, 'Fall'), (4, 'Winter')]
5117db96d56Sopenharmony_ci
5127db96d56Sopenharmony_ci   Equivalent to::
5137db96d56Sopenharmony_ci
5147db96d56Sopenharmony_ci      def enumerate(iterable, start=0):
5157db96d56Sopenharmony_ci          n = start
5167db96d56Sopenharmony_ci          for elem in iterable:
5177db96d56Sopenharmony_ci              yield n, elem
5187db96d56Sopenharmony_ci              n += 1
5197db96d56Sopenharmony_ci
5207db96d56Sopenharmony_ci.. _func-eval:
5217db96d56Sopenharmony_ci
5227db96d56Sopenharmony_ci.. function:: eval(expression, globals=None, locals=None)
5237db96d56Sopenharmony_ci
5247db96d56Sopenharmony_ci   The arguments are a string and optional globals and locals.  If provided,
5257db96d56Sopenharmony_ci   *globals* must be a dictionary.  If provided, *locals* can be any mapping
5267db96d56Sopenharmony_ci   object.
5277db96d56Sopenharmony_ci
5287db96d56Sopenharmony_ci   The *expression* argument is parsed and evaluated as a Python expression
5297db96d56Sopenharmony_ci   (technically speaking, a condition list) using the *globals* and *locals*
5307db96d56Sopenharmony_ci   dictionaries as global and local namespace.  If the *globals* dictionary is
5317db96d56Sopenharmony_ci   present and does not contain a value for the key ``__builtins__``, a
5327db96d56Sopenharmony_ci   reference to the dictionary of the built-in module :mod:`builtins` is
5337db96d56Sopenharmony_ci   inserted under that key before *expression* is parsed.  That way you can
5347db96d56Sopenharmony_ci   control what builtins are available to the executed code by inserting your
5357db96d56Sopenharmony_ci   own ``__builtins__`` dictionary into *globals* before passing it to
5367db96d56Sopenharmony_ci   :func:`eval`.  If the *locals* dictionary is omitted it defaults to the
5377db96d56Sopenharmony_ci   *globals* dictionary.  If both dictionaries are omitted, the expression is
5387db96d56Sopenharmony_ci   executed with the *globals* and *locals* in the environment where
5397db96d56Sopenharmony_ci   :func:`eval` is called.  Note, *eval()* does not have access to the
5407db96d56Sopenharmony_ci   :term:`nested scopes <nested scope>` (non-locals) in the enclosing
5417db96d56Sopenharmony_ci   environment.
5427db96d56Sopenharmony_ci
5437db96d56Sopenharmony_ci   The return value is the result of
5447db96d56Sopenharmony_ci   the evaluated expression. Syntax errors are reported as exceptions.  Example:
5457db96d56Sopenharmony_ci
5467db96d56Sopenharmony_ci      >>> x = 1
5477db96d56Sopenharmony_ci      >>> eval('x+1')
5487db96d56Sopenharmony_ci      2
5497db96d56Sopenharmony_ci
5507db96d56Sopenharmony_ci   This function can also be used to execute arbitrary code objects (such as
5517db96d56Sopenharmony_ci   those created by :func:`compile`).  In this case, pass a code object instead
5527db96d56Sopenharmony_ci   of a string.  If the code object has been compiled with ``'exec'`` as the
5537db96d56Sopenharmony_ci   *mode* argument, :func:`eval`\'s return value will be ``None``.
5547db96d56Sopenharmony_ci
5557db96d56Sopenharmony_ci   Hints: dynamic execution of statements is supported by the :func:`exec`
5567db96d56Sopenharmony_ci   function.  The :func:`globals` and :func:`locals` functions
5577db96d56Sopenharmony_ci   return the current global and local dictionary, respectively, which may be
5587db96d56Sopenharmony_ci   useful to pass around for use by :func:`eval` or :func:`exec`.
5597db96d56Sopenharmony_ci
5607db96d56Sopenharmony_ci   If the given source is a string, then leading and trailing spaces and tabs
5617db96d56Sopenharmony_ci   are stripped.
5627db96d56Sopenharmony_ci
5637db96d56Sopenharmony_ci   See :func:`ast.literal_eval` for a function that can safely evaluate strings
5647db96d56Sopenharmony_ci   with expressions containing only literals.
5657db96d56Sopenharmony_ci
5667db96d56Sopenharmony_ci   .. audit-event:: exec code_object eval
5677db96d56Sopenharmony_ci
5687db96d56Sopenharmony_ci      Raises an :ref:`auditing event <auditing>` ``exec`` with the code object
5697db96d56Sopenharmony_ci      as the argument. Code compilation events may also be raised.
5707db96d56Sopenharmony_ci
5717db96d56Sopenharmony_ci.. index:: pair: built-in function; exec
5727db96d56Sopenharmony_ci
5737db96d56Sopenharmony_ci.. function:: exec(object, globals=None, locals=None, /, *, closure=None)
5747db96d56Sopenharmony_ci
5757db96d56Sopenharmony_ci   This function supports dynamic execution of Python code. *object* must be
5767db96d56Sopenharmony_ci   either a string or a code object.  If it is a string, the string is parsed as
5777db96d56Sopenharmony_ci   a suite of Python statements which is then executed (unless a syntax error
5787db96d56Sopenharmony_ci   occurs). [#]_ If it is a code object, it is simply executed.  In all cases,
5797db96d56Sopenharmony_ci   the code that's executed is expected to be valid as file input (see the
5807db96d56Sopenharmony_ci   section :ref:`file-input` in the Reference Manual). Be aware that the
5817db96d56Sopenharmony_ci   :keyword:`nonlocal`, :keyword:`yield`,  and :keyword:`return`
5827db96d56Sopenharmony_ci   statements may not be used outside of
5837db96d56Sopenharmony_ci   function definitions even within the context of code passed to the
5847db96d56Sopenharmony_ci   :func:`exec` function. The return value is ``None``.
5857db96d56Sopenharmony_ci
5867db96d56Sopenharmony_ci   In all cases, if the optional parts are omitted, the code is executed in the
5877db96d56Sopenharmony_ci   current scope.  If only *globals* is provided, it must be a dictionary
5887db96d56Sopenharmony_ci   (and not a subclass of dictionary), which
5897db96d56Sopenharmony_ci   will be used for both the global and the local variables.  If *globals* and
5907db96d56Sopenharmony_ci   *locals* are given, they are used for the global and local variables,
5917db96d56Sopenharmony_ci   respectively.  If provided, *locals* can be any mapping object.  Remember
5927db96d56Sopenharmony_ci   that at the module level, globals and locals are the same dictionary. If exec
5937db96d56Sopenharmony_ci   gets two separate objects as *globals* and *locals*, the code will be
5947db96d56Sopenharmony_ci   executed as if it were embedded in a class definition.
5957db96d56Sopenharmony_ci
5967db96d56Sopenharmony_ci   If the *globals* dictionary does not contain a value for the key
5977db96d56Sopenharmony_ci   ``__builtins__``, a reference to the dictionary of the built-in module
5987db96d56Sopenharmony_ci   :mod:`builtins` is inserted under that key.  That way you can control what
5997db96d56Sopenharmony_ci   builtins are available to the executed code by inserting your own
6007db96d56Sopenharmony_ci   ``__builtins__`` dictionary into *globals* before passing it to :func:`exec`.
6017db96d56Sopenharmony_ci
6027db96d56Sopenharmony_ci   The *closure* argument specifies a closure--a tuple of cellvars.
6037db96d56Sopenharmony_ci   It's only valid when the *object* is a code object containing free variables.
6047db96d56Sopenharmony_ci   The length of the tuple must exactly match the number of free variables
6057db96d56Sopenharmony_ci   referenced by the code object.
6067db96d56Sopenharmony_ci
6077db96d56Sopenharmony_ci   .. audit-event:: exec code_object exec
6087db96d56Sopenharmony_ci
6097db96d56Sopenharmony_ci      Raises an :ref:`auditing event <auditing>` ``exec`` with the code object
6107db96d56Sopenharmony_ci      as the argument. Code compilation events may also be raised.
6117db96d56Sopenharmony_ci
6127db96d56Sopenharmony_ci   .. note::
6137db96d56Sopenharmony_ci
6147db96d56Sopenharmony_ci      The built-in functions :func:`globals` and :func:`locals` return the current
6157db96d56Sopenharmony_ci      global and local dictionary, respectively, which may be useful to pass around
6167db96d56Sopenharmony_ci      for use as the second and third argument to :func:`exec`.
6177db96d56Sopenharmony_ci
6187db96d56Sopenharmony_ci   .. note::
6197db96d56Sopenharmony_ci
6207db96d56Sopenharmony_ci      The default *locals* act as described for function :func:`locals` below:
6217db96d56Sopenharmony_ci      modifications to the default *locals* dictionary should not be attempted.
6227db96d56Sopenharmony_ci      Pass an explicit *locals* dictionary if you need to see effects of the
6237db96d56Sopenharmony_ci      code on *locals* after function :func:`exec` returns.
6247db96d56Sopenharmony_ci
6257db96d56Sopenharmony_ci   .. versionchanged:: 3.11
6267db96d56Sopenharmony_ci      Added the *closure* parameter.
6277db96d56Sopenharmony_ci
6287db96d56Sopenharmony_ci
6297db96d56Sopenharmony_ci.. function:: filter(function, iterable)
6307db96d56Sopenharmony_ci
6317db96d56Sopenharmony_ci   Construct an iterator from those elements of *iterable* for which *function*
6327db96d56Sopenharmony_ci   is true.  *iterable* may be either a sequence, a container which
6337db96d56Sopenharmony_ci   supports iteration, or an iterator.  If *function* is ``None``, the identity
6347db96d56Sopenharmony_ci   function is assumed, that is, all elements of *iterable* that are false are
6357db96d56Sopenharmony_ci   removed.
6367db96d56Sopenharmony_ci
6377db96d56Sopenharmony_ci   Note that ``filter(function, iterable)`` is equivalent to the generator
6387db96d56Sopenharmony_ci   expression ``(item for item in iterable if function(item))`` if function is
6397db96d56Sopenharmony_ci   not ``None`` and ``(item for item in iterable if item)`` if function is
6407db96d56Sopenharmony_ci   ``None``.
6417db96d56Sopenharmony_ci
6427db96d56Sopenharmony_ci   See :func:`itertools.filterfalse` for the complementary function that returns
6437db96d56Sopenharmony_ci   elements of *iterable* for which *function* is false.
6447db96d56Sopenharmony_ci
6457db96d56Sopenharmony_ci
6467db96d56Sopenharmony_ci.. class:: float(x=0.0)
6477db96d56Sopenharmony_ci
6487db96d56Sopenharmony_ci   .. index::
6497db96d56Sopenharmony_ci      single: NaN
6507db96d56Sopenharmony_ci      single: Infinity
6517db96d56Sopenharmony_ci
6527db96d56Sopenharmony_ci   Return a floating point number constructed from a number or string *x*.
6537db96d56Sopenharmony_ci
6547db96d56Sopenharmony_ci   If the argument is a string, it should contain a decimal number, optionally
6557db96d56Sopenharmony_ci   preceded by a sign, and optionally embedded in whitespace.  The optional
6567db96d56Sopenharmony_ci   sign may be ``'+'`` or ``'-'``; a ``'+'`` sign has no effect on the value
6577db96d56Sopenharmony_ci   produced.  The argument may also be a string representing a NaN
6587db96d56Sopenharmony_ci   (not-a-number), or positive or negative infinity.  More precisely, the
6597db96d56Sopenharmony_ci   input must conform to the ``floatvalue`` production rule in the following
6607db96d56Sopenharmony_ci   grammar, after leading and trailing whitespace characters are removed:
6617db96d56Sopenharmony_ci
6627db96d56Sopenharmony_ci   .. productionlist:: float
6637db96d56Sopenharmony_ci      sign: "+" | "-"
6647db96d56Sopenharmony_ci      infinity: "Infinity" | "inf"
6657db96d56Sopenharmony_ci      nan: "nan"
6667db96d56Sopenharmony_ci      digitpart: `digit` (["_"] `digit`)*
6677db96d56Sopenharmony_ci      number: [`digitpart`] "." `digitpart` | `digitpart` ["."]
6687db96d56Sopenharmony_ci      exponent: ("e" | "E") ["+" | "-"] `digitpart`
6697db96d56Sopenharmony_ci      floatnumber: number [`exponent`]
6707db96d56Sopenharmony_ci      floatvalue: [`sign`] (`floatnumber` | `infinity` | `nan`)
6717db96d56Sopenharmony_ci
6727db96d56Sopenharmony_ci   Here ``digit`` is a Unicode decimal digit (character in the Unicode general
6737db96d56Sopenharmony_ci   category ``Nd``). Case is not significant, so, for example, "inf", "Inf",
6747db96d56Sopenharmony_ci   "INFINITY", and "iNfINity" are all acceptable spellings for positive
6757db96d56Sopenharmony_ci   infinity.
6767db96d56Sopenharmony_ci
6777db96d56Sopenharmony_ci   Otherwise, if the argument is an integer or a floating point number, a
6787db96d56Sopenharmony_ci   floating point number with the same value (within Python's floating point
6797db96d56Sopenharmony_ci   precision) is returned.  If the argument is outside the range of a Python
6807db96d56Sopenharmony_ci   float, an :exc:`OverflowError` will be raised.
6817db96d56Sopenharmony_ci
6827db96d56Sopenharmony_ci   For a general Python object ``x``, ``float(x)`` delegates to
6837db96d56Sopenharmony_ci   ``x.__float__()``.  If ``__float__()`` is not defined then it falls back
6847db96d56Sopenharmony_ci   to :meth:`__index__`.
6857db96d56Sopenharmony_ci
6867db96d56Sopenharmony_ci   If no argument is given, ``0.0`` is returned.
6877db96d56Sopenharmony_ci
6887db96d56Sopenharmony_ci   Examples::
6897db96d56Sopenharmony_ci
6907db96d56Sopenharmony_ci      >>> float('+1.23')
6917db96d56Sopenharmony_ci      1.23
6927db96d56Sopenharmony_ci      >>> float('   -12345\n')
6937db96d56Sopenharmony_ci      -12345.0
6947db96d56Sopenharmony_ci      >>> float('1e-003')
6957db96d56Sopenharmony_ci      0.001
6967db96d56Sopenharmony_ci      >>> float('+1E6')
6977db96d56Sopenharmony_ci      1000000.0
6987db96d56Sopenharmony_ci      >>> float('-Infinity')
6997db96d56Sopenharmony_ci      -inf
7007db96d56Sopenharmony_ci
7017db96d56Sopenharmony_ci   The float type is described in :ref:`typesnumeric`.
7027db96d56Sopenharmony_ci
7037db96d56Sopenharmony_ci   .. versionchanged:: 3.6
7047db96d56Sopenharmony_ci      Grouping digits with underscores as in code literals is allowed.
7057db96d56Sopenharmony_ci
7067db96d56Sopenharmony_ci   .. versionchanged:: 3.7
7077db96d56Sopenharmony_ci      *x* is now a positional-only parameter.
7087db96d56Sopenharmony_ci
7097db96d56Sopenharmony_ci   .. versionchanged:: 3.8
7107db96d56Sopenharmony_ci      Falls back to :meth:`__index__` if :meth:`__float__` is not defined.
7117db96d56Sopenharmony_ci
7127db96d56Sopenharmony_ci
7137db96d56Sopenharmony_ci.. index::
7147db96d56Sopenharmony_ci   single: __format__
7157db96d56Sopenharmony_ci   single: string; format() (built-in function)
7167db96d56Sopenharmony_ci
7177db96d56Sopenharmony_ci.. function:: format(value, format_spec="")
7187db96d56Sopenharmony_ci
7197db96d56Sopenharmony_ci   Convert a *value* to a "formatted" representation, as controlled by
7207db96d56Sopenharmony_ci   *format_spec*.  The interpretation of *format_spec* will depend on the type
7217db96d56Sopenharmony_ci   of the *value* argument; however, there is a standard formatting syntax that
7227db96d56Sopenharmony_ci   is used by most built-in types: :ref:`formatspec`.
7237db96d56Sopenharmony_ci
7247db96d56Sopenharmony_ci   The default *format_spec* is an empty string which usually gives the same
7257db96d56Sopenharmony_ci   effect as calling :func:`str(value) <str>`.
7267db96d56Sopenharmony_ci
7277db96d56Sopenharmony_ci   A call to ``format(value, format_spec)`` is translated to
7287db96d56Sopenharmony_ci   ``type(value).__format__(value, format_spec)`` which bypasses the instance
7297db96d56Sopenharmony_ci   dictionary when searching for the value's :meth:`__format__` method.  A
7307db96d56Sopenharmony_ci   :exc:`TypeError` exception is raised if the method search reaches
7317db96d56Sopenharmony_ci   :mod:`object` and the *format_spec* is non-empty, or if either the
7327db96d56Sopenharmony_ci   *format_spec* or the return value are not strings.
7337db96d56Sopenharmony_ci
7347db96d56Sopenharmony_ci   .. versionchanged:: 3.4
7357db96d56Sopenharmony_ci      ``object().__format__(format_spec)`` raises :exc:`TypeError`
7367db96d56Sopenharmony_ci      if *format_spec* is not an empty string.
7377db96d56Sopenharmony_ci
7387db96d56Sopenharmony_ci
7397db96d56Sopenharmony_ci.. _func-frozenset:
7407db96d56Sopenharmony_ci.. class:: frozenset(iterable=set())
7417db96d56Sopenharmony_ci   :noindex:
7427db96d56Sopenharmony_ci
7437db96d56Sopenharmony_ci   Return a new :class:`frozenset` object, optionally with elements taken from
7447db96d56Sopenharmony_ci   *iterable*.  ``frozenset`` is a built-in class.  See :class:`frozenset` and
7457db96d56Sopenharmony_ci   :ref:`types-set` for documentation about this class.
7467db96d56Sopenharmony_ci
7477db96d56Sopenharmony_ci   For other containers see the built-in :class:`set`, :class:`list`,
7487db96d56Sopenharmony_ci   :class:`tuple`, and :class:`dict` classes, as well as the :mod:`collections`
7497db96d56Sopenharmony_ci   module.
7507db96d56Sopenharmony_ci
7517db96d56Sopenharmony_ci
7527db96d56Sopenharmony_ci.. function:: getattr(object, name)
7537db96d56Sopenharmony_ci              getattr(object, name, default)
7547db96d56Sopenharmony_ci
7557db96d56Sopenharmony_ci   Return the value of the named attribute of *object*.  *name* must be a string.
7567db96d56Sopenharmony_ci   If the string is the name of one of the object's attributes, the result is the
7577db96d56Sopenharmony_ci   value of that attribute.  For example, ``getattr(x, 'foobar')`` is equivalent to
7587db96d56Sopenharmony_ci   ``x.foobar``.  If the named attribute does not exist, *default* is returned if
7597db96d56Sopenharmony_ci   provided, otherwise :exc:`AttributeError` is raised.
7607db96d56Sopenharmony_ci   *name* need not be a Python identifier (see :func:`setattr`).
7617db96d56Sopenharmony_ci
7627db96d56Sopenharmony_ci   .. note::
7637db96d56Sopenharmony_ci
7647db96d56Sopenharmony_ci      Since :ref:`private name mangling <private-name-mangling>` happens at
7657db96d56Sopenharmony_ci      compilation time, one must manually mangle a private attribute's
7667db96d56Sopenharmony_ci      (attributes with two leading underscores) name in order to retrieve it with
7677db96d56Sopenharmony_ci      :func:`getattr`.
7687db96d56Sopenharmony_ci
7697db96d56Sopenharmony_ci
7707db96d56Sopenharmony_ci.. function:: globals()
7717db96d56Sopenharmony_ci
7727db96d56Sopenharmony_ci   Return the dictionary implementing the current module namespace. For code within
7737db96d56Sopenharmony_ci   functions, this is set when the function is defined and remains the same
7747db96d56Sopenharmony_ci   regardless of where the function is called.
7757db96d56Sopenharmony_ci
7767db96d56Sopenharmony_ci
7777db96d56Sopenharmony_ci.. function:: hasattr(object, name)
7787db96d56Sopenharmony_ci
7797db96d56Sopenharmony_ci   The arguments are an object and a string.  The result is ``True`` if the
7807db96d56Sopenharmony_ci   string is the name of one of the object's attributes, ``False`` if not. (This
7817db96d56Sopenharmony_ci   is implemented by calling ``getattr(object, name)`` and seeing whether it
7827db96d56Sopenharmony_ci   raises an :exc:`AttributeError` or not.)
7837db96d56Sopenharmony_ci
7847db96d56Sopenharmony_ci
7857db96d56Sopenharmony_ci.. function:: hash(object)
7867db96d56Sopenharmony_ci
7877db96d56Sopenharmony_ci   Return the hash value of the object (if it has one).  Hash values are
7887db96d56Sopenharmony_ci   integers.  They are used to quickly compare dictionary keys during a
7897db96d56Sopenharmony_ci   dictionary lookup.  Numeric values that compare equal have the same hash
7907db96d56Sopenharmony_ci   value (even if they are of different types, as is the case for 1 and 1.0).
7917db96d56Sopenharmony_ci
7927db96d56Sopenharmony_ci   .. note::
7937db96d56Sopenharmony_ci
7947db96d56Sopenharmony_ci      For objects with custom :meth:`__hash__` methods, note that :func:`hash`
7957db96d56Sopenharmony_ci      truncates the return value based on the bit width of the host machine.
7967db96d56Sopenharmony_ci      See :meth:`__hash__` for details.
7977db96d56Sopenharmony_ci
7987db96d56Sopenharmony_ci.. function:: help()
7997db96d56Sopenharmony_ci              help(request)
8007db96d56Sopenharmony_ci
8017db96d56Sopenharmony_ci   Invoke the built-in help system.  (This function is intended for interactive
8027db96d56Sopenharmony_ci   use.)  If no argument is given, the interactive help system starts on the
8037db96d56Sopenharmony_ci   interpreter console.  If the argument is a string, then the string is looked up
8047db96d56Sopenharmony_ci   as the name of a module, function, class, method, keyword, or documentation
8057db96d56Sopenharmony_ci   topic, and a help page is printed on the console.  If the argument is any other
8067db96d56Sopenharmony_ci   kind of object, a help page on the object is generated.
8077db96d56Sopenharmony_ci
8087db96d56Sopenharmony_ci   Note that if a slash(/) appears in the parameter list of a function when
8097db96d56Sopenharmony_ci   invoking :func:`help`, it means that the parameters prior to the slash are
8107db96d56Sopenharmony_ci   positional-only. For more info, see
8117db96d56Sopenharmony_ci   :ref:`the FAQ entry on positional-only parameters <faq-positional-only-arguments>`.
8127db96d56Sopenharmony_ci
8137db96d56Sopenharmony_ci   This function is added to the built-in namespace by the :mod:`site` module.
8147db96d56Sopenharmony_ci
8157db96d56Sopenharmony_ci   .. versionchanged:: 3.4
8167db96d56Sopenharmony_ci      Changes to :mod:`pydoc` and :mod:`inspect` mean that the reported
8177db96d56Sopenharmony_ci      signatures for callables are now more comprehensive and consistent.
8187db96d56Sopenharmony_ci
8197db96d56Sopenharmony_ci
8207db96d56Sopenharmony_ci.. function:: hex(x)
8217db96d56Sopenharmony_ci
8227db96d56Sopenharmony_ci   Convert an integer number to a lowercase hexadecimal string prefixed with
8237db96d56Sopenharmony_ci   "0x". If *x* is not a Python :class:`int` object, it has to define an
8247db96d56Sopenharmony_ci   :meth:`__index__` method that returns an integer. Some examples:
8257db96d56Sopenharmony_ci
8267db96d56Sopenharmony_ci      >>> hex(255)
8277db96d56Sopenharmony_ci      '0xff'
8287db96d56Sopenharmony_ci      >>> hex(-42)
8297db96d56Sopenharmony_ci      '-0x2a'
8307db96d56Sopenharmony_ci
8317db96d56Sopenharmony_ci   If you want to convert an integer number to an uppercase or lower hexadecimal
8327db96d56Sopenharmony_ci   string with prefix or not, you can use either of the following ways:
8337db96d56Sopenharmony_ci
8347db96d56Sopenharmony_ci     >>> '%#x' % 255, '%x' % 255, '%X' % 255
8357db96d56Sopenharmony_ci     ('0xff', 'ff', 'FF')
8367db96d56Sopenharmony_ci     >>> format(255, '#x'), format(255, 'x'), format(255, 'X')
8377db96d56Sopenharmony_ci     ('0xff', 'ff', 'FF')
8387db96d56Sopenharmony_ci     >>> f'{255:#x}', f'{255:x}', f'{255:X}'
8397db96d56Sopenharmony_ci     ('0xff', 'ff', 'FF')
8407db96d56Sopenharmony_ci
8417db96d56Sopenharmony_ci   See also :func:`format` for more information.
8427db96d56Sopenharmony_ci
8437db96d56Sopenharmony_ci   See also :func:`int` for converting a hexadecimal string to an
8447db96d56Sopenharmony_ci   integer using a base of 16.
8457db96d56Sopenharmony_ci
8467db96d56Sopenharmony_ci   .. note::
8477db96d56Sopenharmony_ci
8487db96d56Sopenharmony_ci      To obtain a hexadecimal string representation for a float, use the
8497db96d56Sopenharmony_ci      :meth:`float.hex` method.
8507db96d56Sopenharmony_ci
8517db96d56Sopenharmony_ci
8527db96d56Sopenharmony_ci.. function:: id(object)
8537db96d56Sopenharmony_ci
8547db96d56Sopenharmony_ci   Return the "identity" of an object.  This is an integer which
8557db96d56Sopenharmony_ci   is guaranteed to be unique and constant for this object during its lifetime.
8567db96d56Sopenharmony_ci   Two objects with non-overlapping lifetimes may have the same :func:`id`
8577db96d56Sopenharmony_ci   value.
8587db96d56Sopenharmony_ci
8597db96d56Sopenharmony_ci   .. impl-detail:: This is the address of the object in memory.
8607db96d56Sopenharmony_ci
8617db96d56Sopenharmony_ci   .. audit-event:: builtins.id id id
8627db96d56Sopenharmony_ci
8637db96d56Sopenharmony_ci
8647db96d56Sopenharmony_ci.. function:: input()
8657db96d56Sopenharmony_ci              input(prompt)
8667db96d56Sopenharmony_ci
8677db96d56Sopenharmony_ci   If the *prompt* argument is present, it is written to standard output without
8687db96d56Sopenharmony_ci   a trailing newline.  The function then reads a line from input, converts it
8697db96d56Sopenharmony_ci   to a string (stripping a trailing newline), and returns that.  When EOF is
8707db96d56Sopenharmony_ci   read, :exc:`EOFError` is raised.  Example::
8717db96d56Sopenharmony_ci
8727db96d56Sopenharmony_ci      >>> s = input('--> ')  # doctest: +SKIP
8737db96d56Sopenharmony_ci      --> Monty Python's Flying Circus
8747db96d56Sopenharmony_ci      >>> s  # doctest: +SKIP
8757db96d56Sopenharmony_ci      "Monty Python's Flying Circus"
8767db96d56Sopenharmony_ci
8777db96d56Sopenharmony_ci   If the :mod:`readline` module was loaded, then :func:`input` will use it
8787db96d56Sopenharmony_ci   to provide elaborate line editing and history features.
8797db96d56Sopenharmony_ci
8807db96d56Sopenharmony_ci   .. audit-event:: builtins.input prompt input
8817db96d56Sopenharmony_ci
8827db96d56Sopenharmony_ci      Raises an :ref:`auditing event <auditing>` ``builtins.input`` with
8837db96d56Sopenharmony_ci      argument ``prompt`` before reading input
8847db96d56Sopenharmony_ci
8857db96d56Sopenharmony_ci   .. audit-event:: builtins.input/result result input
8867db96d56Sopenharmony_ci
8877db96d56Sopenharmony_ci      Raises an :ref:`auditing event <auditing>` ``builtins.input/result``
8887db96d56Sopenharmony_ci      with the result after successfully reading input.
8897db96d56Sopenharmony_ci
8907db96d56Sopenharmony_ci
8917db96d56Sopenharmony_ci.. class:: int(x=0)
8927db96d56Sopenharmony_ci           int(x, base=10)
8937db96d56Sopenharmony_ci
8947db96d56Sopenharmony_ci   Return an integer object constructed from a number or string *x*, or return
8957db96d56Sopenharmony_ci   ``0`` if no arguments are given.  If *x* defines :meth:`__int__`,
8967db96d56Sopenharmony_ci   ``int(x)`` returns ``x.__int__()``.  If *x* defines :meth:`__index__`,
8977db96d56Sopenharmony_ci   it returns ``x.__index__()``.  If *x* defines :meth:`__trunc__`,
8987db96d56Sopenharmony_ci   it returns ``x.__trunc__()``.
8997db96d56Sopenharmony_ci   For floating point numbers, this truncates towards zero.
9007db96d56Sopenharmony_ci
9017db96d56Sopenharmony_ci   If *x* is not a number or if *base* is given, then *x* must be a string,
9027db96d56Sopenharmony_ci   :class:`bytes`, or :class:`bytearray` instance representing an integer
9037db96d56Sopenharmony_ci   in radix *base*.  Optionally, the string can be preceded by ``+`` or ``-``
9047db96d56Sopenharmony_ci   (with no space in between), have leading zeros, be surrounded by whitespace,
9057db96d56Sopenharmony_ci   and have single underscores interspersed between digits.
9067db96d56Sopenharmony_ci
9077db96d56Sopenharmony_ci   A base-n integer string contains digits, each representing a value from 0 to
9087db96d56Sopenharmony_ci   n-1. The values 0--9 can be represented by any Unicode decimal digit. The
9097db96d56Sopenharmony_ci   values 10--35 can be represented by ``a`` to ``z`` (or ``A`` to ``Z``). The
9107db96d56Sopenharmony_ci   default *base* is 10. The allowed bases are 0 and 2--36. Base-2, -8, and -16
9117db96d56Sopenharmony_ci   strings can be optionally prefixed with ``0b``/``0B``, ``0o``/``0O``, or
9127db96d56Sopenharmony_ci   ``0x``/``0X``, as with integer literals in code.  For base 0, the string is
9137db96d56Sopenharmony_ci   interpreted in a similar way to an :ref:`integer literal in code <integers>`,
9147db96d56Sopenharmony_ci   in that the actual base is 2, 8, 10, or 16 as determined by the prefix. Base
9157db96d56Sopenharmony_ci   0 also disallows leading zeros: ``int('010', 0)`` is not legal, while
9167db96d56Sopenharmony_ci   ``int('010')`` and ``int('010', 8)`` are.
9177db96d56Sopenharmony_ci
9187db96d56Sopenharmony_ci   The integer type is described in :ref:`typesnumeric`.
9197db96d56Sopenharmony_ci
9207db96d56Sopenharmony_ci   .. versionchanged:: 3.4
9217db96d56Sopenharmony_ci      If *base* is not an instance of :class:`int` and the *base* object has a
9227db96d56Sopenharmony_ci      :meth:`base.__index__ <object.__index__>` method, that method is called
9237db96d56Sopenharmony_ci      to obtain an integer for the base.  Previous versions used
9247db96d56Sopenharmony_ci      :meth:`base.__int__ <object.__int__>` instead of :meth:`base.__index__
9257db96d56Sopenharmony_ci      <object.__index__>`.
9267db96d56Sopenharmony_ci
9277db96d56Sopenharmony_ci   .. versionchanged:: 3.6
9287db96d56Sopenharmony_ci      Grouping digits with underscores as in code literals is allowed.
9297db96d56Sopenharmony_ci
9307db96d56Sopenharmony_ci   .. versionchanged:: 3.7
9317db96d56Sopenharmony_ci      *x* is now a positional-only parameter.
9327db96d56Sopenharmony_ci
9337db96d56Sopenharmony_ci   .. versionchanged:: 3.8
9347db96d56Sopenharmony_ci      Falls back to :meth:`__index__` if :meth:`__int__` is not defined.
9357db96d56Sopenharmony_ci
9367db96d56Sopenharmony_ci   .. versionchanged:: 3.11
9377db96d56Sopenharmony_ci      The delegation to :meth:`__trunc__` is deprecated.
9387db96d56Sopenharmony_ci
9397db96d56Sopenharmony_ci   .. versionchanged:: 3.11
9407db96d56Sopenharmony_ci      :class:`int` string inputs and string representations can be limited to
9417db96d56Sopenharmony_ci      help avoid denial of service attacks. A :exc:`ValueError` is raised when
9427db96d56Sopenharmony_ci      the limit is exceeded while converting a string *x* to an :class:`int` or
9437db96d56Sopenharmony_ci      when converting an :class:`int` into a string would exceed the limit.
9447db96d56Sopenharmony_ci      See the :ref:`integer string conversion length limitation
9457db96d56Sopenharmony_ci      <int_max_str_digits>` documentation.
9467db96d56Sopenharmony_ci
9477db96d56Sopenharmony_ci.. function:: isinstance(object, classinfo)
9487db96d56Sopenharmony_ci
9497db96d56Sopenharmony_ci   Return ``True`` if the *object* argument is an instance of the *classinfo*
9507db96d56Sopenharmony_ci   argument, or of a (direct, indirect, or :term:`virtual <abstract base
9517db96d56Sopenharmony_ci   class>`) subclass thereof.  If *object* is not
9527db96d56Sopenharmony_ci   an object of the given type, the function always returns ``False``.
9537db96d56Sopenharmony_ci   If *classinfo* is a tuple of type objects (or recursively, other such
9547db96d56Sopenharmony_ci   tuples) or a :ref:`types-union` of multiple types, return ``True`` if
9557db96d56Sopenharmony_ci   *object* is an instance of any of the types.
9567db96d56Sopenharmony_ci   If *classinfo* is not a type or tuple of types and such tuples,
9577db96d56Sopenharmony_ci   a :exc:`TypeError` exception is raised. :exc:`TypeError` may not be
9587db96d56Sopenharmony_ci   raised for an invalid type if an earlier check succeeds.
9597db96d56Sopenharmony_ci
9607db96d56Sopenharmony_ci   .. versionchanged:: 3.10
9617db96d56Sopenharmony_ci      *classinfo* can be a :ref:`types-union`.
9627db96d56Sopenharmony_ci
9637db96d56Sopenharmony_ci
9647db96d56Sopenharmony_ci.. function:: issubclass(class, classinfo)
9657db96d56Sopenharmony_ci
9667db96d56Sopenharmony_ci   Return ``True`` if *class* is a subclass (direct, indirect, or :term:`virtual
9677db96d56Sopenharmony_ci   <abstract base class>`) of *classinfo*.  A
9687db96d56Sopenharmony_ci   class is considered a subclass of itself. *classinfo* may be a tuple of class
9697db96d56Sopenharmony_ci   objects (or recursively, other such tuples)
9707db96d56Sopenharmony_ci   or a :ref:`types-union`, in which case return ``True`` if *class* is a
9717db96d56Sopenharmony_ci   subclass of any entry in *classinfo*.  In any other case, a :exc:`TypeError`
9727db96d56Sopenharmony_ci   exception is raised.
9737db96d56Sopenharmony_ci
9747db96d56Sopenharmony_ci   .. versionchanged:: 3.10
9757db96d56Sopenharmony_ci      *classinfo* can be a :ref:`types-union`.
9767db96d56Sopenharmony_ci
9777db96d56Sopenharmony_ci
9787db96d56Sopenharmony_ci.. function:: iter(object)
9797db96d56Sopenharmony_ci              iter(object, sentinel)
9807db96d56Sopenharmony_ci
9817db96d56Sopenharmony_ci   Return an :term:`iterator` object.  The first argument is interpreted very
9827db96d56Sopenharmony_ci   differently depending on the presence of the second argument. Without a
9837db96d56Sopenharmony_ci   second argument, *object* must be a collection object which supports the
9847db96d56Sopenharmony_ci   :term:`iterable` protocol (the :meth:`__iter__` method), or it must support
9857db96d56Sopenharmony_ci   the sequence protocol (the :meth:`__getitem__` method with integer arguments
9867db96d56Sopenharmony_ci   starting at ``0``).  If it does not support either of those protocols,
9877db96d56Sopenharmony_ci   :exc:`TypeError` is raised. If the second argument, *sentinel*, is given,
9887db96d56Sopenharmony_ci   then *object* must be a callable object.  The iterator created in this case
9897db96d56Sopenharmony_ci   will call *object* with no arguments for each call to its
9907db96d56Sopenharmony_ci   :meth:`~iterator.__next__` method; if the value returned is equal to
9917db96d56Sopenharmony_ci   *sentinel*, :exc:`StopIteration` will be raised, otherwise the value will
9927db96d56Sopenharmony_ci   be returned.
9937db96d56Sopenharmony_ci
9947db96d56Sopenharmony_ci   See also :ref:`typeiter`.
9957db96d56Sopenharmony_ci
9967db96d56Sopenharmony_ci   One useful application of the second form of :func:`iter` is to build a
9977db96d56Sopenharmony_ci   block-reader. For example, reading fixed-width blocks from a binary
9987db96d56Sopenharmony_ci   database file until the end of file is reached::
9997db96d56Sopenharmony_ci
10007db96d56Sopenharmony_ci      from functools import partial
10017db96d56Sopenharmony_ci      with open('mydata.db', 'rb') as f:
10027db96d56Sopenharmony_ci          for block in iter(partial(f.read, 64), b''):
10037db96d56Sopenharmony_ci              process_block(block)
10047db96d56Sopenharmony_ci
10057db96d56Sopenharmony_ci
10067db96d56Sopenharmony_ci.. function:: len(s)
10077db96d56Sopenharmony_ci
10087db96d56Sopenharmony_ci   Return the length (the number of items) of an object.  The argument may be a
10097db96d56Sopenharmony_ci   sequence (such as a string, bytes, tuple, list, or range) or a collection
10107db96d56Sopenharmony_ci   (such as a dictionary, set, or frozen set).
10117db96d56Sopenharmony_ci
10127db96d56Sopenharmony_ci   .. impl-detail::
10137db96d56Sopenharmony_ci
10147db96d56Sopenharmony_ci      ``len`` raises :exc:`OverflowError` on lengths larger than
10157db96d56Sopenharmony_ci      :data:`sys.maxsize`, such as :class:`range(2 ** 100) <range>`.
10167db96d56Sopenharmony_ci
10177db96d56Sopenharmony_ci
10187db96d56Sopenharmony_ci.. _func-list:
10197db96d56Sopenharmony_ci.. class:: list()
10207db96d56Sopenharmony_ci           list(iterable)
10217db96d56Sopenharmony_ci   :noindex:
10227db96d56Sopenharmony_ci
10237db96d56Sopenharmony_ci   Rather than being a function, :class:`list` is actually a mutable
10247db96d56Sopenharmony_ci   sequence type, as documented in :ref:`typesseq-list` and :ref:`typesseq`.
10257db96d56Sopenharmony_ci
10267db96d56Sopenharmony_ci
10277db96d56Sopenharmony_ci.. function:: locals()
10287db96d56Sopenharmony_ci
10297db96d56Sopenharmony_ci   Update and return a dictionary representing the current local symbol table.
10307db96d56Sopenharmony_ci   Free variables are returned by :func:`locals` when it is called in function
10317db96d56Sopenharmony_ci   blocks, but not in class blocks. Note that at the module level, :func:`locals`
10327db96d56Sopenharmony_ci   and :func:`globals` are the same dictionary.
10337db96d56Sopenharmony_ci
10347db96d56Sopenharmony_ci   .. note::
10357db96d56Sopenharmony_ci      The contents of this dictionary should not be modified; changes may not
10367db96d56Sopenharmony_ci      affect the values of local and free variables used by the interpreter.
10377db96d56Sopenharmony_ci
10387db96d56Sopenharmony_ci.. function:: map(function, iterable, *iterables)
10397db96d56Sopenharmony_ci
10407db96d56Sopenharmony_ci   Return an iterator that applies *function* to every item of *iterable*,
10417db96d56Sopenharmony_ci   yielding the results.  If additional *iterables* arguments are passed,
10427db96d56Sopenharmony_ci   *function* must take that many arguments and is applied to the items from all
10437db96d56Sopenharmony_ci   iterables in parallel.  With multiple iterables, the iterator stops when the
10447db96d56Sopenharmony_ci   shortest iterable is exhausted.  For cases where the function inputs are
10457db96d56Sopenharmony_ci   already arranged into argument tuples, see :func:`itertools.starmap`\.
10467db96d56Sopenharmony_ci
10477db96d56Sopenharmony_ci
10487db96d56Sopenharmony_ci.. function:: max(iterable, *, key=None)
10497db96d56Sopenharmony_ci              max(iterable, *, default, key=None)
10507db96d56Sopenharmony_ci              max(arg1, arg2, *args, key=None)
10517db96d56Sopenharmony_ci
10527db96d56Sopenharmony_ci   Return the largest item in an iterable or the largest of two or more
10537db96d56Sopenharmony_ci   arguments.
10547db96d56Sopenharmony_ci
10557db96d56Sopenharmony_ci   If one positional argument is provided, it should be an :term:`iterable`.
10567db96d56Sopenharmony_ci   The largest item in the iterable is returned.  If two or more positional
10577db96d56Sopenharmony_ci   arguments are provided, the largest of the positional arguments is
10587db96d56Sopenharmony_ci   returned.
10597db96d56Sopenharmony_ci
10607db96d56Sopenharmony_ci   There are two optional keyword-only arguments. The *key* argument specifies
10617db96d56Sopenharmony_ci   a one-argument ordering function like that used for :meth:`list.sort`. The
10627db96d56Sopenharmony_ci   *default* argument specifies an object to return if the provided iterable is
10637db96d56Sopenharmony_ci   empty. If the iterable is empty and *default* is not provided, a
10647db96d56Sopenharmony_ci   :exc:`ValueError` is raised.
10657db96d56Sopenharmony_ci
10667db96d56Sopenharmony_ci   If multiple items are maximal, the function returns the first one
10677db96d56Sopenharmony_ci   encountered.  This is consistent with other sort-stability preserving tools
10687db96d56Sopenharmony_ci   such as ``sorted(iterable, key=keyfunc, reverse=True)[0]`` and
10697db96d56Sopenharmony_ci   ``heapq.nlargest(1, iterable, key=keyfunc)``.
10707db96d56Sopenharmony_ci
10717db96d56Sopenharmony_ci   .. versionadded:: 3.4
10727db96d56Sopenharmony_ci      The *default* keyword-only argument.
10737db96d56Sopenharmony_ci
10747db96d56Sopenharmony_ci   .. versionchanged:: 3.8
10757db96d56Sopenharmony_ci      The *key* can be ``None``.
10767db96d56Sopenharmony_ci
10777db96d56Sopenharmony_ci
10787db96d56Sopenharmony_ci.. _func-memoryview:
10797db96d56Sopenharmony_ci.. class:: memoryview(object)
10807db96d56Sopenharmony_ci   :noindex:
10817db96d56Sopenharmony_ci
10827db96d56Sopenharmony_ci   Return a "memory view" object created from the given argument.  See
10837db96d56Sopenharmony_ci   :ref:`typememoryview` for more information.
10847db96d56Sopenharmony_ci
10857db96d56Sopenharmony_ci
10867db96d56Sopenharmony_ci.. function:: min(iterable, *, key=None)
10877db96d56Sopenharmony_ci              min(iterable, *, default, key=None)
10887db96d56Sopenharmony_ci              min(arg1, arg2, *args, key=None)
10897db96d56Sopenharmony_ci
10907db96d56Sopenharmony_ci   Return the smallest item in an iterable or the smallest of two or more
10917db96d56Sopenharmony_ci   arguments.
10927db96d56Sopenharmony_ci
10937db96d56Sopenharmony_ci   If one positional argument is provided, it should be an :term:`iterable`.
10947db96d56Sopenharmony_ci   The smallest item in the iterable is returned.  If two or more positional
10957db96d56Sopenharmony_ci   arguments are provided, the smallest of the positional arguments is
10967db96d56Sopenharmony_ci   returned.
10977db96d56Sopenharmony_ci
10987db96d56Sopenharmony_ci   There are two optional keyword-only arguments. The *key* argument specifies
10997db96d56Sopenharmony_ci   a one-argument ordering function like that used for :meth:`list.sort`. The
11007db96d56Sopenharmony_ci   *default* argument specifies an object to return if the provided iterable is
11017db96d56Sopenharmony_ci   empty. If the iterable is empty and *default* is not provided, a
11027db96d56Sopenharmony_ci   :exc:`ValueError` is raised.
11037db96d56Sopenharmony_ci
11047db96d56Sopenharmony_ci   If multiple items are minimal, the function returns the first one
11057db96d56Sopenharmony_ci   encountered.  This is consistent with other sort-stability preserving tools
11067db96d56Sopenharmony_ci   such as ``sorted(iterable, key=keyfunc)[0]`` and ``heapq.nsmallest(1,
11077db96d56Sopenharmony_ci   iterable, key=keyfunc)``.
11087db96d56Sopenharmony_ci
11097db96d56Sopenharmony_ci   .. versionadded:: 3.4
11107db96d56Sopenharmony_ci      The *default* keyword-only argument.
11117db96d56Sopenharmony_ci
11127db96d56Sopenharmony_ci   .. versionchanged:: 3.8
11137db96d56Sopenharmony_ci      The *key* can be ``None``.
11147db96d56Sopenharmony_ci
11157db96d56Sopenharmony_ci
11167db96d56Sopenharmony_ci.. function:: next(iterator)
11177db96d56Sopenharmony_ci              next(iterator, default)
11187db96d56Sopenharmony_ci
11197db96d56Sopenharmony_ci   Retrieve the next item from the :term:`iterator` by calling its
11207db96d56Sopenharmony_ci   :meth:`~iterator.__next__` method.  If *default* is given, it is returned
11217db96d56Sopenharmony_ci   if the iterator is exhausted, otherwise :exc:`StopIteration` is raised.
11227db96d56Sopenharmony_ci
11237db96d56Sopenharmony_ci
11247db96d56Sopenharmony_ci.. class:: object()
11257db96d56Sopenharmony_ci
11267db96d56Sopenharmony_ci   Return a new featureless object.  :class:`object` is a base for all classes.
11277db96d56Sopenharmony_ci   It has methods that are common to all instances of Python classes.  This
11287db96d56Sopenharmony_ci   function does not accept any arguments.
11297db96d56Sopenharmony_ci
11307db96d56Sopenharmony_ci   .. note::
11317db96d56Sopenharmony_ci
11327db96d56Sopenharmony_ci      :class:`object` does *not* have a :attr:`~object.__dict__`, so you can't
11337db96d56Sopenharmony_ci      assign arbitrary attributes to an instance of the :class:`object` class.
11347db96d56Sopenharmony_ci
11357db96d56Sopenharmony_ci
11367db96d56Sopenharmony_ci.. function:: oct(x)
11377db96d56Sopenharmony_ci
11387db96d56Sopenharmony_ci  Convert an integer number to an octal string prefixed with "0o".  The result
11397db96d56Sopenharmony_ci  is a valid Python expression. If *x* is not a Python :class:`int` object, it
11407db96d56Sopenharmony_ci  has to define an :meth:`__index__` method that returns an integer. For
11417db96d56Sopenharmony_ci  example:
11427db96d56Sopenharmony_ci
11437db96d56Sopenharmony_ci      >>> oct(8)
11447db96d56Sopenharmony_ci      '0o10'
11457db96d56Sopenharmony_ci      >>> oct(-56)
11467db96d56Sopenharmony_ci      '-0o70'
11477db96d56Sopenharmony_ci
11487db96d56Sopenharmony_ci  If you want to convert an integer number to an octal string either with the prefix
11497db96d56Sopenharmony_ci  "0o" or not, you can use either of the following ways.
11507db96d56Sopenharmony_ci
11517db96d56Sopenharmony_ci      >>> '%#o' % 10, '%o' % 10
11527db96d56Sopenharmony_ci      ('0o12', '12')
11537db96d56Sopenharmony_ci      >>> format(10, '#o'), format(10, 'o')
11547db96d56Sopenharmony_ci      ('0o12', '12')
11557db96d56Sopenharmony_ci      >>> f'{10:#o}', f'{10:o}'
11567db96d56Sopenharmony_ci      ('0o12', '12')
11577db96d56Sopenharmony_ci
11587db96d56Sopenharmony_ci  See also :func:`format` for more information.
11597db96d56Sopenharmony_ci
11607db96d56Sopenharmony_ci   .. index::
11617db96d56Sopenharmony_ci      single: file object; open() built-in function
11627db96d56Sopenharmony_ci
11637db96d56Sopenharmony_ci.. function:: open(file, mode='r', buffering=-1, encoding=None, errors=None, newline=None, closefd=True, opener=None)
11647db96d56Sopenharmony_ci
11657db96d56Sopenharmony_ci   Open *file* and return a corresponding :term:`file object`.  If the file
11667db96d56Sopenharmony_ci   cannot be opened, an :exc:`OSError` is raised. See
11677db96d56Sopenharmony_ci   :ref:`tut-files` for more examples of how to use this function.
11687db96d56Sopenharmony_ci
11697db96d56Sopenharmony_ci   *file* is a :term:`path-like object` giving the pathname (absolute or
11707db96d56Sopenharmony_ci   relative to the current working directory) of the file to be opened or an
11717db96d56Sopenharmony_ci   integer file descriptor of the file to be wrapped.  (If a file descriptor is
11727db96d56Sopenharmony_ci   given, it is closed when the returned I/O object is closed unless *closefd*
11737db96d56Sopenharmony_ci   is set to ``False``.)
11747db96d56Sopenharmony_ci
11757db96d56Sopenharmony_ci   *mode* is an optional string that specifies the mode in which the file is
11767db96d56Sopenharmony_ci   opened.  It defaults to ``'r'`` which means open for reading in text mode.
11777db96d56Sopenharmony_ci   Other common values are ``'w'`` for writing (truncating the file if it
11787db96d56Sopenharmony_ci   already exists), ``'x'`` for exclusive creation, and ``'a'`` for appending
11797db96d56Sopenharmony_ci   (which on *some* Unix systems, means that *all* writes append to the end of
11807db96d56Sopenharmony_ci   the file regardless of the current seek position).  In text mode, if
11817db96d56Sopenharmony_ci   *encoding* is not specified the encoding used is platform-dependent:
11827db96d56Sopenharmony_ci   :func:`locale.getencoding()` is called to get the current locale encoding.
11837db96d56Sopenharmony_ci   (For reading and writing raw bytes use binary mode and leave
11847db96d56Sopenharmony_ci   *encoding* unspecified.)  The available modes are:
11857db96d56Sopenharmony_ci
11867db96d56Sopenharmony_ci   .. _filemodes:
11877db96d56Sopenharmony_ci
11887db96d56Sopenharmony_ci   .. index::
11897db96d56Sopenharmony_ci      pair: file; modes
11907db96d56Sopenharmony_ci
11917db96d56Sopenharmony_ci   ========= ===============================================================
11927db96d56Sopenharmony_ci   Character Meaning
11937db96d56Sopenharmony_ci   ========= ===============================================================
11947db96d56Sopenharmony_ci   ``'r'``   open for reading (default)
11957db96d56Sopenharmony_ci   ``'w'``   open for writing, truncating the file first
11967db96d56Sopenharmony_ci   ``'x'``   open for exclusive creation, failing if the file already exists
11977db96d56Sopenharmony_ci   ``'a'``   open for writing, appending to the end of file if it exists
11987db96d56Sopenharmony_ci   ``'b'``   binary mode
11997db96d56Sopenharmony_ci   ``'t'``   text mode (default)
12007db96d56Sopenharmony_ci   ``'+'``   open for updating (reading and writing)
12017db96d56Sopenharmony_ci   ========= ===============================================================
12027db96d56Sopenharmony_ci
12037db96d56Sopenharmony_ci   The default mode is ``'r'`` (open for reading text, a synonym of ``'rt'``).
12047db96d56Sopenharmony_ci   Modes ``'w+'`` and ``'w+b'`` open and truncate the file.  Modes ``'r+'``
12057db96d56Sopenharmony_ci   and ``'r+b'`` open the file with no truncation.
12067db96d56Sopenharmony_ci
12077db96d56Sopenharmony_ci   As mentioned in the :ref:`io-overview`, Python distinguishes between binary
12087db96d56Sopenharmony_ci   and text I/O.  Files opened in binary mode (including ``'b'`` in the *mode*
12097db96d56Sopenharmony_ci   argument) return contents as :class:`bytes` objects without any decoding.  In
12107db96d56Sopenharmony_ci   text mode (the default, or when ``'t'`` is included in the *mode* argument),
12117db96d56Sopenharmony_ci   the contents of the file are returned as :class:`str`, the bytes having been
12127db96d56Sopenharmony_ci   first decoded using a platform-dependent encoding or using the specified
12137db96d56Sopenharmony_ci   *encoding* if given.
12147db96d56Sopenharmony_ci
12157db96d56Sopenharmony_ci   .. note::
12167db96d56Sopenharmony_ci
12177db96d56Sopenharmony_ci      Python doesn't depend on the underlying operating system's notion of text
12187db96d56Sopenharmony_ci      files; all the processing is done by Python itself, and is therefore
12197db96d56Sopenharmony_ci      platform-independent.
12207db96d56Sopenharmony_ci
12217db96d56Sopenharmony_ci   *buffering* is an optional integer used to set the buffering policy.  Pass 0
12227db96d56Sopenharmony_ci   to switch buffering off (only allowed in binary mode), 1 to select line
12237db96d56Sopenharmony_ci   buffering (only usable in text mode), and an integer > 1 to indicate the size
12247db96d56Sopenharmony_ci   in bytes of a fixed-size chunk buffer. Note that specifying a buffer size this
12257db96d56Sopenharmony_ci   way applies for binary buffered I/O, but ``TextIOWrapper`` (i.e., files opened
12267db96d56Sopenharmony_ci   with ``mode='r+'``) would have another buffering. To disable buffering in
12277db96d56Sopenharmony_ci   ``TextIOWrapper``, consider using the ``write_through`` flag for
12287db96d56Sopenharmony_ci   :func:`io.TextIOWrapper.reconfigure`. When no *buffering* argument is
12297db96d56Sopenharmony_ci   given, the default buffering policy works as follows:
12307db96d56Sopenharmony_ci
12317db96d56Sopenharmony_ci   * Binary files are buffered in fixed-size chunks; the size of the buffer is
12327db96d56Sopenharmony_ci     chosen using a heuristic trying to determine the underlying device's "block
12337db96d56Sopenharmony_ci     size" and falling back on :attr:`io.DEFAULT_BUFFER_SIZE`.  On many systems,
12347db96d56Sopenharmony_ci     the buffer will typically be 4096 or 8192 bytes long.
12357db96d56Sopenharmony_ci
12367db96d56Sopenharmony_ci   * "Interactive" text files (files for which :meth:`~io.IOBase.isatty`
12377db96d56Sopenharmony_ci     returns ``True``) use line buffering.  Other text files use the policy
12387db96d56Sopenharmony_ci     described above for binary files.
12397db96d56Sopenharmony_ci
12407db96d56Sopenharmony_ci   *encoding* is the name of the encoding used to decode or encode the file.
12417db96d56Sopenharmony_ci   This should only be used in text mode.  The default encoding is platform
12427db96d56Sopenharmony_ci   dependent (whatever :func:`locale.getencoding` returns), but any
12437db96d56Sopenharmony_ci   :term:`text encoding` supported by Python can be used.
12447db96d56Sopenharmony_ci   See the :mod:`codecs` module for the list of supported encodings.
12457db96d56Sopenharmony_ci
12467db96d56Sopenharmony_ci   *errors* is an optional string that specifies how encoding and decoding
12477db96d56Sopenharmony_ci   errors are to be handled—this cannot be used in binary mode.
12487db96d56Sopenharmony_ci   A variety of standard error handlers are available
12497db96d56Sopenharmony_ci   (listed under :ref:`error-handlers`), though any
12507db96d56Sopenharmony_ci   error handling name that has been registered with
12517db96d56Sopenharmony_ci   :func:`codecs.register_error` is also valid.  The standard names
12527db96d56Sopenharmony_ci   include:
12537db96d56Sopenharmony_ci
12547db96d56Sopenharmony_ci   * ``'strict'`` to raise a :exc:`ValueError` exception if there is
12557db96d56Sopenharmony_ci     an encoding error.  The default value of ``None`` has the same
12567db96d56Sopenharmony_ci     effect.
12577db96d56Sopenharmony_ci
12587db96d56Sopenharmony_ci   * ``'ignore'`` ignores errors.  Note that ignoring encoding errors
12597db96d56Sopenharmony_ci     can lead to data loss.
12607db96d56Sopenharmony_ci
12617db96d56Sopenharmony_ci   * ``'replace'`` causes a replacement marker (such as ``'?'``) to be inserted
12627db96d56Sopenharmony_ci     where there is malformed data.
12637db96d56Sopenharmony_ci
12647db96d56Sopenharmony_ci   * ``'surrogateescape'`` will represent any incorrect bytes as low
12657db96d56Sopenharmony_ci     surrogate code units ranging from U+DC80 to U+DCFF.
12667db96d56Sopenharmony_ci     These surrogate code units will then be turned back into
12677db96d56Sopenharmony_ci     the same bytes when the ``surrogateescape`` error handler is used
12687db96d56Sopenharmony_ci     when writing data.  This is useful for processing files in an
12697db96d56Sopenharmony_ci     unknown encoding.
12707db96d56Sopenharmony_ci
12717db96d56Sopenharmony_ci   * ``'xmlcharrefreplace'`` is only supported when writing to a file.
12727db96d56Sopenharmony_ci     Characters not supported by the encoding are replaced with the
12737db96d56Sopenharmony_ci     appropriate XML character reference ``&#nnn;``.
12747db96d56Sopenharmony_ci
12757db96d56Sopenharmony_ci   * ``'backslashreplace'`` replaces malformed data by Python's backslashed
12767db96d56Sopenharmony_ci     escape sequences.
12777db96d56Sopenharmony_ci
12787db96d56Sopenharmony_ci   * ``'namereplace'`` (also only supported when writing)
12797db96d56Sopenharmony_ci     replaces unsupported characters with ``\N{...}`` escape sequences.
12807db96d56Sopenharmony_ci
12817db96d56Sopenharmony_ci   .. index::
12827db96d56Sopenharmony_ci      single: universal newlines; open() built-in function
12837db96d56Sopenharmony_ci
12847db96d56Sopenharmony_ci   .. _open-newline-parameter:
12857db96d56Sopenharmony_ci
12867db96d56Sopenharmony_ci   *newline* determines how to parse newline characters from the stream.
12877db96d56Sopenharmony_ci   It can be ``None``, ``''``, ``'\n'``, ``'\r'``, and
12887db96d56Sopenharmony_ci   ``'\r\n'``.  It works as follows:
12897db96d56Sopenharmony_ci
12907db96d56Sopenharmony_ci   * When reading input from the stream, if *newline* is ``None``, universal
12917db96d56Sopenharmony_ci     newlines mode is enabled.  Lines in the input can end in ``'\n'``,
12927db96d56Sopenharmony_ci     ``'\r'``, or ``'\r\n'``, and these are translated into ``'\n'`` before
12937db96d56Sopenharmony_ci     being returned to the caller.  If it is ``''``, universal newlines mode is
12947db96d56Sopenharmony_ci     enabled, but line endings are returned to the caller untranslated.  If it
12957db96d56Sopenharmony_ci     has any of the other legal values, input lines are only terminated by the
12967db96d56Sopenharmony_ci     given string, and the line ending is returned to the caller untranslated.
12977db96d56Sopenharmony_ci
12987db96d56Sopenharmony_ci   * When writing output to the stream, if *newline* is ``None``, any ``'\n'``
12997db96d56Sopenharmony_ci     characters written are translated to the system default line separator,
13007db96d56Sopenharmony_ci     :data:`os.linesep`.  If *newline* is ``''`` or ``'\n'``, no translation
13017db96d56Sopenharmony_ci     takes place.  If *newline* is any of the other legal values, any ``'\n'``
13027db96d56Sopenharmony_ci     characters written are translated to the given string.
13037db96d56Sopenharmony_ci
13047db96d56Sopenharmony_ci   If *closefd* is ``False`` and a file descriptor rather than a filename was
13057db96d56Sopenharmony_ci   given, the underlying file descriptor will be kept open when the file is
13067db96d56Sopenharmony_ci   closed.  If a filename is given *closefd* must be ``True`` (the default);
13077db96d56Sopenharmony_ci   otherwise, an error will be raised.
13087db96d56Sopenharmony_ci
13097db96d56Sopenharmony_ci   A custom opener can be used by passing a callable as *opener*. The underlying
13107db96d56Sopenharmony_ci   file descriptor for the file object is then obtained by calling *opener* with
13117db96d56Sopenharmony_ci   (*file*, *flags*). *opener* must return an open file descriptor (passing
13127db96d56Sopenharmony_ci   :mod:`os.open` as *opener* results in functionality similar to passing
13137db96d56Sopenharmony_ci   ``None``).
13147db96d56Sopenharmony_ci
13157db96d56Sopenharmony_ci   The newly created file is :ref:`non-inheritable <fd_inheritance>`.
13167db96d56Sopenharmony_ci
13177db96d56Sopenharmony_ci   The following example uses the :ref:`dir_fd <dir_fd>` parameter of the
13187db96d56Sopenharmony_ci   :func:`os.open` function to open a file relative to a given directory::
13197db96d56Sopenharmony_ci
13207db96d56Sopenharmony_ci      >>> import os
13217db96d56Sopenharmony_ci      >>> dir_fd = os.open('somedir', os.O_RDONLY)
13227db96d56Sopenharmony_ci      >>> def opener(path, flags):
13237db96d56Sopenharmony_ci      ...     return os.open(path, flags, dir_fd=dir_fd)
13247db96d56Sopenharmony_ci      ...
13257db96d56Sopenharmony_ci      >>> with open('spamspam.txt', 'w', opener=opener) as f:
13267db96d56Sopenharmony_ci      ...     print('This will be written to somedir/spamspam.txt', file=f)
13277db96d56Sopenharmony_ci      ...
13287db96d56Sopenharmony_ci      >>> os.close(dir_fd)  # don't leak a file descriptor
13297db96d56Sopenharmony_ci
13307db96d56Sopenharmony_ci   The type of :term:`file object` returned by the :func:`open` function
13317db96d56Sopenharmony_ci   depends on the mode.  When :func:`open` is used to open a file in a text
13327db96d56Sopenharmony_ci   mode (``'w'``, ``'r'``, ``'wt'``, ``'rt'``, etc.), it returns a subclass of
13337db96d56Sopenharmony_ci   :class:`io.TextIOBase` (specifically :class:`io.TextIOWrapper`).  When used
13347db96d56Sopenharmony_ci   to open a file in a binary mode with buffering, the returned class is a
13357db96d56Sopenharmony_ci   subclass of :class:`io.BufferedIOBase`.  The exact class varies: in read
13367db96d56Sopenharmony_ci   binary mode, it returns an :class:`io.BufferedReader`; in write binary and
13377db96d56Sopenharmony_ci   append binary modes, it returns an :class:`io.BufferedWriter`, and in
13387db96d56Sopenharmony_ci   read/write mode, it returns an :class:`io.BufferedRandom`.  When buffering is
13397db96d56Sopenharmony_ci   disabled, the raw stream, a subclass of :class:`io.RawIOBase`,
13407db96d56Sopenharmony_ci   :class:`io.FileIO`, is returned.
13417db96d56Sopenharmony_ci
13427db96d56Sopenharmony_ci   .. index::
13437db96d56Sopenharmony_ci      single: line-buffered I/O
13447db96d56Sopenharmony_ci      single: unbuffered I/O
13457db96d56Sopenharmony_ci      single: buffer size, I/O
13467db96d56Sopenharmony_ci      single: I/O control; buffering
13477db96d56Sopenharmony_ci      single: binary mode
13487db96d56Sopenharmony_ci      single: text mode
13497db96d56Sopenharmony_ci      pair: module; sys
13507db96d56Sopenharmony_ci
13517db96d56Sopenharmony_ci   See also the file handling modules, such as :mod:`fileinput`, :mod:`io`
13527db96d56Sopenharmony_ci   (where :func:`open` is declared), :mod:`os`, :mod:`os.path`, :mod:`tempfile`,
13537db96d56Sopenharmony_ci   and :mod:`shutil`.
13547db96d56Sopenharmony_ci
13557db96d56Sopenharmony_ci   .. audit-event:: open file,mode,flags open
13567db96d56Sopenharmony_ci
13577db96d56Sopenharmony_ci   The ``mode`` and ``flags`` arguments may have been modified or inferred from
13587db96d56Sopenharmony_ci   the original call.
13597db96d56Sopenharmony_ci
13607db96d56Sopenharmony_ci   .. versionchanged:: 3.3
13617db96d56Sopenharmony_ci
13627db96d56Sopenharmony_ci         * The *opener* parameter was added.
13637db96d56Sopenharmony_ci         * The ``'x'`` mode was added.
13647db96d56Sopenharmony_ci         * :exc:`IOError` used to be raised, it is now an alias of :exc:`OSError`.
13657db96d56Sopenharmony_ci         * :exc:`FileExistsError` is now raised if the file opened in exclusive
13667db96d56Sopenharmony_ci           creation mode (``'x'``) already exists.
13677db96d56Sopenharmony_ci
13687db96d56Sopenharmony_ci   .. versionchanged:: 3.4
13697db96d56Sopenharmony_ci
13707db96d56Sopenharmony_ci         * The file is now non-inheritable.
13717db96d56Sopenharmony_ci
13727db96d56Sopenharmony_ci   .. versionchanged:: 3.5
13737db96d56Sopenharmony_ci
13747db96d56Sopenharmony_ci         * If the system call is interrupted and the signal handler does not raise an
13757db96d56Sopenharmony_ci           exception, the function now retries the system call instead of raising an
13767db96d56Sopenharmony_ci           :exc:`InterruptedError` exception (see :pep:`475` for the rationale).
13777db96d56Sopenharmony_ci         * The ``'namereplace'`` error handler was added.
13787db96d56Sopenharmony_ci
13797db96d56Sopenharmony_ci   .. versionchanged:: 3.6
13807db96d56Sopenharmony_ci
13817db96d56Sopenharmony_ci         * Support added to accept objects implementing :class:`os.PathLike`.
13827db96d56Sopenharmony_ci         * On Windows, opening a console buffer may return a subclass of
13837db96d56Sopenharmony_ci           :class:`io.RawIOBase` other than :class:`io.FileIO`.
13847db96d56Sopenharmony_ci
13857db96d56Sopenharmony_ci   .. versionchanged:: 3.11
13867db96d56Sopenharmony_ci      The ``'U'`` mode has been removed.
13877db96d56Sopenharmony_ci
13887db96d56Sopenharmony_ci.. function:: ord(c)
13897db96d56Sopenharmony_ci
13907db96d56Sopenharmony_ci   Given a string representing one Unicode character, return an integer
13917db96d56Sopenharmony_ci   representing the Unicode code point of that character.  For example,
13927db96d56Sopenharmony_ci   ``ord('a')`` returns the integer ``97`` and ``ord('€')`` (Euro sign)
13937db96d56Sopenharmony_ci   returns ``8364``.  This is the inverse of :func:`chr`.
13947db96d56Sopenharmony_ci
13957db96d56Sopenharmony_ci
13967db96d56Sopenharmony_ci.. function:: pow(base, exp, mod=None)
13977db96d56Sopenharmony_ci
13987db96d56Sopenharmony_ci   Return *base* to the power *exp*; if *mod* is present, return *base* to the
13997db96d56Sopenharmony_ci   power *exp*, modulo *mod* (computed more efficiently than
14007db96d56Sopenharmony_ci   ``pow(base, exp) % mod``). The two-argument form ``pow(base, exp)`` is
14017db96d56Sopenharmony_ci   equivalent to using the power operator: ``base**exp``.
14027db96d56Sopenharmony_ci
14037db96d56Sopenharmony_ci   The arguments must have numeric types.  With mixed operand types, the
14047db96d56Sopenharmony_ci   coercion rules for binary arithmetic operators apply.  For :class:`int`
14057db96d56Sopenharmony_ci   operands, the result has the same type as the operands (after coercion)
14067db96d56Sopenharmony_ci   unless the second argument is negative; in that case, all arguments are
14077db96d56Sopenharmony_ci   converted to float and a float result is delivered.  For example, ``pow(10, 2)``
14087db96d56Sopenharmony_ci   returns ``100``, but ``pow(10, -2)`` returns ``0.01``.  For a negative base of
14097db96d56Sopenharmony_ci   type :class:`int` or :class:`float` and a non-integral exponent, a complex
14107db96d56Sopenharmony_ci   result is delivered.  For example, ``pow(-9, 0.5)`` returns a value close
14117db96d56Sopenharmony_ci   to ``3j``.
14127db96d56Sopenharmony_ci
14137db96d56Sopenharmony_ci   For :class:`int` operands *base* and *exp*, if *mod* is present, *mod* must
14147db96d56Sopenharmony_ci   also be of integer type and *mod* must be nonzero. If *mod* is present and
14157db96d56Sopenharmony_ci   *exp* is negative, *base* must be relatively prime to *mod*. In that case,
14167db96d56Sopenharmony_ci   ``pow(inv_base, -exp, mod)`` is returned, where *inv_base* is an inverse to
14177db96d56Sopenharmony_ci   *base* modulo *mod*.
14187db96d56Sopenharmony_ci
14197db96d56Sopenharmony_ci   Here's an example of computing an inverse for ``38`` modulo ``97``::
14207db96d56Sopenharmony_ci
14217db96d56Sopenharmony_ci      >>> pow(38, -1, mod=97)
14227db96d56Sopenharmony_ci      23
14237db96d56Sopenharmony_ci      >>> 23 * 38 % 97 == 1
14247db96d56Sopenharmony_ci      True
14257db96d56Sopenharmony_ci
14267db96d56Sopenharmony_ci   .. versionchanged:: 3.8
14277db96d56Sopenharmony_ci      For :class:`int` operands, the three-argument form of ``pow`` now allows
14287db96d56Sopenharmony_ci      the second argument to be negative, permitting computation of modular
14297db96d56Sopenharmony_ci      inverses.
14307db96d56Sopenharmony_ci
14317db96d56Sopenharmony_ci   .. versionchanged:: 3.8
14327db96d56Sopenharmony_ci      Allow keyword arguments.  Formerly, only positional arguments were
14337db96d56Sopenharmony_ci      supported.
14347db96d56Sopenharmony_ci
14357db96d56Sopenharmony_ci
14367db96d56Sopenharmony_ci.. function:: print(*objects, sep=' ', end='\n', file=None, flush=False)
14377db96d56Sopenharmony_ci
14387db96d56Sopenharmony_ci   Print *objects* to the text stream *file*, separated by *sep* and followed
14397db96d56Sopenharmony_ci   by *end*.  *sep*, *end*, *file*, and *flush*, if present, must be given as keyword
14407db96d56Sopenharmony_ci   arguments.
14417db96d56Sopenharmony_ci
14427db96d56Sopenharmony_ci   All non-keyword arguments are converted to strings like :func:`str` does and
14437db96d56Sopenharmony_ci   written to the stream, separated by *sep* and followed by *end*.  Both *sep*
14447db96d56Sopenharmony_ci   and *end* must be strings; they can also be ``None``, which means to use the
14457db96d56Sopenharmony_ci   default values.  If no *objects* are given, :func:`print` will just write
14467db96d56Sopenharmony_ci   *end*.
14477db96d56Sopenharmony_ci
14487db96d56Sopenharmony_ci   The *file* argument must be an object with a ``write(string)`` method; if it
14497db96d56Sopenharmony_ci   is not present or ``None``, :data:`sys.stdout` will be used.  Since printed
14507db96d56Sopenharmony_ci   arguments are converted to text strings, :func:`print` cannot be used with
14517db96d56Sopenharmony_ci   binary mode file objects.  For these, use ``file.write(...)`` instead.
14527db96d56Sopenharmony_ci
14537db96d56Sopenharmony_ci   Output buffering is usually determined by *file*.
14547db96d56Sopenharmony_ci   However, if *flush* is true, the stream is forcibly flushed.
14557db96d56Sopenharmony_ci
14567db96d56Sopenharmony_ci
14577db96d56Sopenharmony_ci   .. versionchanged:: 3.3
14587db96d56Sopenharmony_ci      Added the *flush* keyword argument.
14597db96d56Sopenharmony_ci
14607db96d56Sopenharmony_ci
14617db96d56Sopenharmony_ci.. class:: property(fget=None, fset=None, fdel=None, doc=None)
14627db96d56Sopenharmony_ci
14637db96d56Sopenharmony_ci   Return a property attribute.
14647db96d56Sopenharmony_ci
14657db96d56Sopenharmony_ci   *fget* is a function for getting an attribute value.  *fset* is a function
14667db96d56Sopenharmony_ci   for setting an attribute value. *fdel* is a function for deleting an attribute
14677db96d56Sopenharmony_ci   value.  And *doc* creates a docstring for the attribute.
14687db96d56Sopenharmony_ci
14697db96d56Sopenharmony_ci   A typical use is to define a managed attribute ``x``::
14707db96d56Sopenharmony_ci
14717db96d56Sopenharmony_ci      class C:
14727db96d56Sopenharmony_ci          def __init__(self):
14737db96d56Sopenharmony_ci              self._x = None
14747db96d56Sopenharmony_ci
14757db96d56Sopenharmony_ci          def getx(self):
14767db96d56Sopenharmony_ci              return self._x
14777db96d56Sopenharmony_ci
14787db96d56Sopenharmony_ci          def setx(self, value):
14797db96d56Sopenharmony_ci              self._x = value
14807db96d56Sopenharmony_ci
14817db96d56Sopenharmony_ci          def delx(self):
14827db96d56Sopenharmony_ci              del self._x
14837db96d56Sopenharmony_ci
14847db96d56Sopenharmony_ci          x = property(getx, setx, delx, "I'm the 'x' property.")
14857db96d56Sopenharmony_ci
14867db96d56Sopenharmony_ci   If *c* is an instance of *C*, ``c.x`` will invoke the getter,
14877db96d56Sopenharmony_ci   ``c.x = value`` will invoke the setter, and ``del c.x`` the deleter.
14887db96d56Sopenharmony_ci
14897db96d56Sopenharmony_ci   If given, *doc* will be the docstring of the property attribute. Otherwise, the
14907db96d56Sopenharmony_ci   property will copy *fget*'s docstring (if it exists).  This makes it possible to
14917db96d56Sopenharmony_ci   create read-only properties easily using :func:`property` as a :term:`decorator`::
14927db96d56Sopenharmony_ci
14937db96d56Sopenharmony_ci      class Parrot:
14947db96d56Sopenharmony_ci          def __init__(self):
14957db96d56Sopenharmony_ci              self._voltage = 100000
14967db96d56Sopenharmony_ci
14977db96d56Sopenharmony_ci          @property
14987db96d56Sopenharmony_ci          def voltage(self):
14997db96d56Sopenharmony_ci              """Get the current voltage."""
15007db96d56Sopenharmony_ci              return self._voltage
15017db96d56Sopenharmony_ci
15027db96d56Sopenharmony_ci   The ``@property`` decorator turns the :meth:`voltage` method into a "getter"
15037db96d56Sopenharmony_ci   for a read-only attribute with the same name, and it sets the docstring for
15047db96d56Sopenharmony_ci   *voltage* to "Get the current voltage."
15057db96d56Sopenharmony_ci
15067db96d56Sopenharmony_ci   A property object has :attr:`~property.getter`, :attr:`~property.setter`,
15077db96d56Sopenharmony_ci   and :attr:`~property.deleter` methods usable as decorators that create a
15087db96d56Sopenharmony_ci   copy of the property with the corresponding accessor function set to the
15097db96d56Sopenharmony_ci   decorated function.  This is best explained with an example::
15107db96d56Sopenharmony_ci
15117db96d56Sopenharmony_ci      class C:
15127db96d56Sopenharmony_ci          def __init__(self):
15137db96d56Sopenharmony_ci              self._x = None
15147db96d56Sopenharmony_ci
15157db96d56Sopenharmony_ci          @property
15167db96d56Sopenharmony_ci          def x(self):
15177db96d56Sopenharmony_ci              """I'm the 'x' property."""
15187db96d56Sopenharmony_ci              return self._x
15197db96d56Sopenharmony_ci
15207db96d56Sopenharmony_ci          @x.setter
15217db96d56Sopenharmony_ci          def x(self, value):
15227db96d56Sopenharmony_ci              self._x = value
15237db96d56Sopenharmony_ci
15247db96d56Sopenharmony_ci          @x.deleter
15257db96d56Sopenharmony_ci          def x(self):
15267db96d56Sopenharmony_ci              del self._x
15277db96d56Sopenharmony_ci
15287db96d56Sopenharmony_ci   This code is exactly equivalent to the first example.  Be sure to give the
15297db96d56Sopenharmony_ci   additional functions the same name as the original property (``x`` in this
15307db96d56Sopenharmony_ci   case.)
15317db96d56Sopenharmony_ci
15327db96d56Sopenharmony_ci   The returned property object also has the attributes ``fget``, ``fset``, and
15337db96d56Sopenharmony_ci   ``fdel`` corresponding to the constructor arguments.
15347db96d56Sopenharmony_ci
15357db96d56Sopenharmony_ci   .. versionchanged:: 3.5
15367db96d56Sopenharmony_ci      The docstrings of property objects are now writeable.
15377db96d56Sopenharmony_ci
15387db96d56Sopenharmony_ci
15397db96d56Sopenharmony_ci.. _func-range:
15407db96d56Sopenharmony_ci.. class:: range(stop)
15417db96d56Sopenharmony_ci           range(start, stop, step=1)
15427db96d56Sopenharmony_ci   :noindex:
15437db96d56Sopenharmony_ci
15447db96d56Sopenharmony_ci   Rather than being a function, :class:`range` is actually an immutable
15457db96d56Sopenharmony_ci   sequence type, as documented in :ref:`typesseq-range` and :ref:`typesseq`.
15467db96d56Sopenharmony_ci
15477db96d56Sopenharmony_ci
15487db96d56Sopenharmony_ci.. function:: repr(object)
15497db96d56Sopenharmony_ci
15507db96d56Sopenharmony_ci   Return a string containing a printable representation of an object.  For many
15517db96d56Sopenharmony_ci   types, this function makes an attempt to return a string that would yield an
15527db96d56Sopenharmony_ci   object with the same value when passed to :func:`eval`; otherwise, the
15537db96d56Sopenharmony_ci   representation is a string enclosed in angle brackets that contains the name
15547db96d56Sopenharmony_ci   of the type of the object together with additional information often
15557db96d56Sopenharmony_ci   including the name and address of the object.  A class can control what this
15567db96d56Sopenharmony_ci   function returns for its instances by defining a :meth:`__repr__` method.
15577db96d56Sopenharmony_ci   If :func:`sys.displayhook` is not accessible, this function will raise
15587db96d56Sopenharmony_ci   :exc:`RuntimeError`.
15597db96d56Sopenharmony_ci
15607db96d56Sopenharmony_ci
15617db96d56Sopenharmony_ci.. function:: reversed(seq)
15627db96d56Sopenharmony_ci
15637db96d56Sopenharmony_ci   Return a reverse :term:`iterator`.  *seq* must be an object which has
15647db96d56Sopenharmony_ci   a :meth:`__reversed__` method or supports the sequence protocol (the
15657db96d56Sopenharmony_ci   :meth:`__len__` method and the :meth:`__getitem__` method with integer
15667db96d56Sopenharmony_ci   arguments starting at ``0``).
15677db96d56Sopenharmony_ci
15687db96d56Sopenharmony_ci
15697db96d56Sopenharmony_ci.. function:: round(number, ndigits=None)
15707db96d56Sopenharmony_ci
15717db96d56Sopenharmony_ci   Return *number* rounded to *ndigits* precision after the decimal
15727db96d56Sopenharmony_ci   point.  If *ndigits* is omitted or is ``None``, it returns the
15737db96d56Sopenharmony_ci   nearest integer to its input.
15747db96d56Sopenharmony_ci
15757db96d56Sopenharmony_ci   For the built-in types supporting :func:`round`, values are rounded to the
15767db96d56Sopenharmony_ci   closest multiple of 10 to the power minus *ndigits*; if two multiples are
15777db96d56Sopenharmony_ci   equally close, rounding is done toward the even choice (so, for example,
15787db96d56Sopenharmony_ci   both ``round(0.5)`` and ``round(-0.5)`` are ``0``, and ``round(1.5)`` is
15797db96d56Sopenharmony_ci   ``2``).  Any integer value is valid for *ndigits* (positive, zero, or
15807db96d56Sopenharmony_ci   negative).  The return value is an integer if *ndigits* is omitted or
15817db96d56Sopenharmony_ci   ``None``.
15827db96d56Sopenharmony_ci   Otherwise, the return value has the same type as *number*.
15837db96d56Sopenharmony_ci
15847db96d56Sopenharmony_ci   For a general Python object ``number``, ``round`` delegates to
15857db96d56Sopenharmony_ci   ``number.__round__``.
15867db96d56Sopenharmony_ci
15877db96d56Sopenharmony_ci   .. note::
15887db96d56Sopenharmony_ci
15897db96d56Sopenharmony_ci      The behavior of :func:`round` for floats can be surprising: for example,
15907db96d56Sopenharmony_ci      ``round(2.675, 2)`` gives ``2.67`` instead of the expected ``2.68``.
15917db96d56Sopenharmony_ci      This is not a bug: it's a result of the fact that most decimal fractions
15927db96d56Sopenharmony_ci      can't be represented exactly as a float.  See :ref:`tut-fp-issues` for
15937db96d56Sopenharmony_ci      more information.
15947db96d56Sopenharmony_ci
15957db96d56Sopenharmony_ci
15967db96d56Sopenharmony_ci.. _func-set:
15977db96d56Sopenharmony_ci.. class:: set()
15987db96d56Sopenharmony_ci           set(iterable)
15997db96d56Sopenharmony_ci   :noindex:
16007db96d56Sopenharmony_ci
16017db96d56Sopenharmony_ci   Return a new :class:`set` object, optionally with elements taken from
16027db96d56Sopenharmony_ci   *iterable*.  ``set`` is a built-in class.  See :class:`set` and
16037db96d56Sopenharmony_ci   :ref:`types-set` for documentation about this class.
16047db96d56Sopenharmony_ci
16057db96d56Sopenharmony_ci   For other containers see the built-in :class:`frozenset`, :class:`list`,
16067db96d56Sopenharmony_ci   :class:`tuple`, and :class:`dict` classes, as well as the :mod:`collections`
16077db96d56Sopenharmony_ci   module.
16087db96d56Sopenharmony_ci
16097db96d56Sopenharmony_ci
16107db96d56Sopenharmony_ci.. function:: setattr(object, name, value)
16117db96d56Sopenharmony_ci
16127db96d56Sopenharmony_ci   This is the counterpart of :func:`getattr`.  The arguments are an object, a
16137db96d56Sopenharmony_ci   string, and an arbitrary value.  The string may name an existing attribute or a
16147db96d56Sopenharmony_ci   new attribute.  The function assigns the value to the attribute, provided the
16157db96d56Sopenharmony_ci   object allows it.  For example, ``setattr(x, 'foobar', 123)`` is equivalent to
16167db96d56Sopenharmony_ci   ``x.foobar = 123``.
16177db96d56Sopenharmony_ci
16187db96d56Sopenharmony_ci   *name* need not be a Python identifier as defined in :ref:`identifiers`
16197db96d56Sopenharmony_ci   unless the object chooses to enforce that, for example in a custom
16207db96d56Sopenharmony_ci   :meth:`~object.__getattribute__` or via :attr:`~object.__slots__`.
16217db96d56Sopenharmony_ci   An attribute whose name is not an identifier will not be accessible using
16227db96d56Sopenharmony_ci   the dot notation, but is accessible through :func:`getattr` etc..
16237db96d56Sopenharmony_ci
16247db96d56Sopenharmony_ci   .. note::
16257db96d56Sopenharmony_ci
16267db96d56Sopenharmony_ci      Since :ref:`private name mangling <private-name-mangling>` happens at
16277db96d56Sopenharmony_ci      compilation time, one must manually mangle a private attribute's
16287db96d56Sopenharmony_ci      (attributes with two leading underscores) name in order to set it with
16297db96d56Sopenharmony_ci      :func:`setattr`.
16307db96d56Sopenharmony_ci
16317db96d56Sopenharmony_ci
16327db96d56Sopenharmony_ci.. class:: slice(stop)
16337db96d56Sopenharmony_ci           slice(start, stop, step=1)
16347db96d56Sopenharmony_ci
16357db96d56Sopenharmony_ci   Return a :term:`slice` object representing the set of indices specified by
16367db96d56Sopenharmony_ci   ``range(start, stop, step)``.  The *start* and *step* arguments default to
16377db96d56Sopenharmony_ci   ``None``.  Slice objects have read-only data attributes :attr:`~slice.start`,
16387db96d56Sopenharmony_ci   :attr:`~slice.stop`, and :attr:`~slice.step` which merely return the argument
16397db96d56Sopenharmony_ci   values (or their default).  They have no other explicit functionality;
16407db96d56Sopenharmony_ci   however, they are used by NumPy and other third-party packages.
16417db96d56Sopenharmony_ci   Slice objects are also generated when extended indexing syntax is used.  For
16427db96d56Sopenharmony_ci   example: ``a[start:stop:step]`` or ``a[start:stop, i]``.  See
16437db96d56Sopenharmony_ci   :func:`itertools.islice` for an alternate version that returns an iterator.
16447db96d56Sopenharmony_ci
16457db96d56Sopenharmony_ci
16467db96d56Sopenharmony_ci.. function:: sorted(iterable, /, *, key=None, reverse=False)
16477db96d56Sopenharmony_ci
16487db96d56Sopenharmony_ci   Return a new sorted list from the items in *iterable*.
16497db96d56Sopenharmony_ci
16507db96d56Sopenharmony_ci   Has two optional arguments which must be specified as keyword arguments.
16517db96d56Sopenharmony_ci
16527db96d56Sopenharmony_ci   *key* specifies a function of one argument that is used to extract a comparison
16537db96d56Sopenharmony_ci   key from each element in *iterable* (for example, ``key=str.lower``).  The
16547db96d56Sopenharmony_ci   default value is ``None`` (compare the elements directly).
16557db96d56Sopenharmony_ci
16567db96d56Sopenharmony_ci   *reverse* is a boolean value.  If set to ``True``, then the list elements are
16577db96d56Sopenharmony_ci   sorted as if each comparison were reversed.
16587db96d56Sopenharmony_ci
16597db96d56Sopenharmony_ci   Use :func:`functools.cmp_to_key` to convert an old-style *cmp* function to a
16607db96d56Sopenharmony_ci   *key* function.
16617db96d56Sopenharmony_ci
16627db96d56Sopenharmony_ci   The built-in :func:`sorted` function is guaranteed to be stable. A sort is
16637db96d56Sopenharmony_ci   stable if it guarantees not to change the relative order of elements that
16647db96d56Sopenharmony_ci   compare equal --- this is helpful for sorting in multiple passes (for
16657db96d56Sopenharmony_ci   example, sort by department, then by salary grade).
16667db96d56Sopenharmony_ci
16677db96d56Sopenharmony_ci   The sort algorithm uses only ``<`` comparisons between items.  While
16687db96d56Sopenharmony_ci   defining an :meth:`~object.__lt__` method will suffice for sorting,
16697db96d56Sopenharmony_ci   :PEP:`8` recommends that all six :ref:`rich comparisons
16707db96d56Sopenharmony_ci   <comparisons>` be implemented.  This will help avoid bugs when using
16717db96d56Sopenharmony_ci   the same data with other ordering tools such as :func:`max` that rely
16727db96d56Sopenharmony_ci   on a different underlying method.  Implementing all six comparisons
16737db96d56Sopenharmony_ci   also helps avoid confusion for mixed type comparisons which can call
16747db96d56Sopenharmony_ci   reflected the :meth:`~object.__gt__` method.
16757db96d56Sopenharmony_ci
16767db96d56Sopenharmony_ci   For sorting examples and a brief sorting tutorial, see :ref:`sortinghowto`.
16777db96d56Sopenharmony_ci
16787db96d56Sopenharmony_ci.. decorator:: staticmethod
16797db96d56Sopenharmony_ci
16807db96d56Sopenharmony_ci   Transform a method into a static method.
16817db96d56Sopenharmony_ci
16827db96d56Sopenharmony_ci   A static method does not receive an implicit first argument. To declare a static
16837db96d56Sopenharmony_ci   method, use this idiom::
16847db96d56Sopenharmony_ci
16857db96d56Sopenharmony_ci      class C:
16867db96d56Sopenharmony_ci          @staticmethod
16877db96d56Sopenharmony_ci          def f(arg1, arg2, argN): ...
16887db96d56Sopenharmony_ci
16897db96d56Sopenharmony_ci   The ``@staticmethod`` form is a function :term:`decorator` -- see
16907db96d56Sopenharmony_ci   :ref:`function` for details.
16917db96d56Sopenharmony_ci
16927db96d56Sopenharmony_ci   A static method can be called either on the class (such as ``C.f()``) or on
16937db96d56Sopenharmony_ci   an instance (such as ``C().f()``). Moreover, they can be called as regular
16947db96d56Sopenharmony_ci   functions (such as ``f()``).
16957db96d56Sopenharmony_ci
16967db96d56Sopenharmony_ci   Static methods in Python are similar to those found in Java or C++. Also, see
16977db96d56Sopenharmony_ci   :func:`classmethod` for a variant that is useful for creating alternate class
16987db96d56Sopenharmony_ci   constructors.
16997db96d56Sopenharmony_ci
17007db96d56Sopenharmony_ci   Like all decorators, it is also possible to call ``staticmethod`` as
17017db96d56Sopenharmony_ci   a regular function and do something with its result.  This is needed
17027db96d56Sopenharmony_ci   in some cases where you need a reference to a function from a class
17037db96d56Sopenharmony_ci   body and you want to avoid the automatic transformation to instance
17047db96d56Sopenharmony_ci   method.  For these cases, use this idiom::
17057db96d56Sopenharmony_ci
17067db96d56Sopenharmony_ci      def regular_function():
17077db96d56Sopenharmony_ci          ...
17087db96d56Sopenharmony_ci
17097db96d56Sopenharmony_ci      class C:
17107db96d56Sopenharmony_ci          method = staticmethod(regular_function)
17117db96d56Sopenharmony_ci
17127db96d56Sopenharmony_ci   For more information on static methods, see :ref:`types`.
17137db96d56Sopenharmony_ci
17147db96d56Sopenharmony_ci   .. versionchanged:: 3.10
17157db96d56Sopenharmony_ci      Static methods now inherit the method attributes (``__module__``,
17167db96d56Sopenharmony_ci      ``__name__``, ``__qualname__``, ``__doc__`` and ``__annotations__``),
17177db96d56Sopenharmony_ci      have a new ``__wrapped__`` attribute, and are now callable as regular
17187db96d56Sopenharmony_ci      functions.
17197db96d56Sopenharmony_ci
17207db96d56Sopenharmony_ci
17217db96d56Sopenharmony_ci.. index::
17227db96d56Sopenharmony_ci   single: string; str() (built-in function)
17237db96d56Sopenharmony_ci
17247db96d56Sopenharmony_ci.. _func-str:
17257db96d56Sopenharmony_ci.. class:: str(object='')
17267db96d56Sopenharmony_ci           str(object=b'', encoding='utf-8', errors='strict')
17277db96d56Sopenharmony_ci   :noindex:
17287db96d56Sopenharmony_ci
17297db96d56Sopenharmony_ci   Return a :class:`str` version of *object*.  See :func:`str` for details.
17307db96d56Sopenharmony_ci
17317db96d56Sopenharmony_ci   ``str`` is the built-in string :term:`class`.  For general information
17327db96d56Sopenharmony_ci   about strings, see :ref:`textseq`.
17337db96d56Sopenharmony_ci
17347db96d56Sopenharmony_ci
17357db96d56Sopenharmony_ci.. function:: sum(iterable, /, start=0)
17367db96d56Sopenharmony_ci
17377db96d56Sopenharmony_ci   Sums *start* and the items of an *iterable* from left to right and returns the
17387db96d56Sopenharmony_ci   total.  The *iterable*'s items are normally numbers, and the start value is not
17397db96d56Sopenharmony_ci   allowed to be a string.
17407db96d56Sopenharmony_ci
17417db96d56Sopenharmony_ci   For some use cases, there are good alternatives to :func:`sum`.
17427db96d56Sopenharmony_ci   The preferred, fast way to concatenate a sequence of strings is by calling
17437db96d56Sopenharmony_ci   ``''.join(sequence)``.  To add floating point values with extended precision,
17447db96d56Sopenharmony_ci   see :func:`math.fsum`\.  To concatenate a series of iterables, consider using
17457db96d56Sopenharmony_ci   :func:`itertools.chain`.
17467db96d56Sopenharmony_ci
17477db96d56Sopenharmony_ci   .. versionchanged:: 3.8
17487db96d56Sopenharmony_ci      The *start* parameter can be specified as a keyword argument.
17497db96d56Sopenharmony_ci
17507db96d56Sopenharmony_ci.. class:: super()
17517db96d56Sopenharmony_ci           super(type, object_or_type=None)
17527db96d56Sopenharmony_ci
17537db96d56Sopenharmony_ci   Return a proxy object that delegates method calls to a parent or sibling
17547db96d56Sopenharmony_ci   class of *type*.  This is useful for accessing inherited methods that have
17557db96d56Sopenharmony_ci   been overridden in a class.
17567db96d56Sopenharmony_ci
17577db96d56Sopenharmony_ci   The *object_or_type* determines the :term:`method resolution order`
17587db96d56Sopenharmony_ci   to be searched.  The search starts from the class right after the
17597db96d56Sopenharmony_ci   *type*.
17607db96d56Sopenharmony_ci
17617db96d56Sopenharmony_ci   For example, if :attr:`~class.__mro__` of *object_or_type* is
17627db96d56Sopenharmony_ci   ``D -> B -> C -> A -> object`` and the value of *type* is ``B``,
17637db96d56Sopenharmony_ci   then :func:`super` searches ``C -> A -> object``.
17647db96d56Sopenharmony_ci
17657db96d56Sopenharmony_ci   The :attr:`~class.__mro__` attribute of the *object_or_type* lists the method
17667db96d56Sopenharmony_ci   resolution search order used by both :func:`getattr` and :func:`super`.  The
17677db96d56Sopenharmony_ci   attribute is dynamic and can change whenever the inheritance hierarchy is
17687db96d56Sopenharmony_ci   updated.
17697db96d56Sopenharmony_ci
17707db96d56Sopenharmony_ci   If the second argument is omitted, the super object returned is unbound.  If
17717db96d56Sopenharmony_ci   the second argument is an object, ``isinstance(obj, type)`` must be true.  If
17727db96d56Sopenharmony_ci   the second argument is a type, ``issubclass(type2, type)`` must be true (this
17737db96d56Sopenharmony_ci   is useful for classmethods).
17747db96d56Sopenharmony_ci
17757db96d56Sopenharmony_ci   There are two typical use cases for *super*.  In a class hierarchy with
17767db96d56Sopenharmony_ci   single inheritance, *super* can be used to refer to parent classes without
17777db96d56Sopenharmony_ci   naming them explicitly, thus making the code more maintainable.  This use
17787db96d56Sopenharmony_ci   closely parallels the use of *super* in other programming languages.
17797db96d56Sopenharmony_ci
17807db96d56Sopenharmony_ci   The second use case is to support cooperative multiple inheritance in a
17817db96d56Sopenharmony_ci   dynamic execution environment.  This use case is unique to Python and is
17827db96d56Sopenharmony_ci   not found in statically compiled languages or languages that only support
17837db96d56Sopenharmony_ci   single inheritance.  This makes it possible to implement "diamond diagrams"
17847db96d56Sopenharmony_ci   where multiple base classes implement the same method.  Good design dictates
17857db96d56Sopenharmony_ci   that such implementations have the same calling signature in every case (because the
17867db96d56Sopenharmony_ci   order of calls is determined at runtime, because that order adapts
17877db96d56Sopenharmony_ci   to changes in the class hierarchy, and because that order can include
17887db96d56Sopenharmony_ci   sibling classes that are unknown prior to runtime).
17897db96d56Sopenharmony_ci
17907db96d56Sopenharmony_ci   For both use cases, a typical superclass call looks like this::
17917db96d56Sopenharmony_ci
17927db96d56Sopenharmony_ci      class C(B):
17937db96d56Sopenharmony_ci          def method(self, arg):
17947db96d56Sopenharmony_ci              super().method(arg)    # This does the same thing as:
17957db96d56Sopenharmony_ci                                     # super(C, self).method(arg)
17967db96d56Sopenharmony_ci
17977db96d56Sopenharmony_ci   In addition to method lookups, :func:`super` also works for attribute
17987db96d56Sopenharmony_ci   lookups.  One possible use case for this is calling :term:`descriptors <descriptor>`
17997db96d56Sopenharmony_ci   in a parent or sibling class.
18007db96d56Sopenharmony_ci
18017db96d56Sopenharmony_ci   Note that :func:`super` is implemented as part of the binding process for
18027db96d56Sopenharmony_ci   explicit dotted attribute lookups such as ``super().__getitem__(name)``.
18037db96d56Sopenharmony_ci   It does so by implementing its own :meth:`__getattribute__` method for searching
18047db96d56Sopenharmony_ci   classes in a predictable order that supports cooperative multiple inheritance.
18057db96d56Sopenharmony_ci   Accordingly, :func:`super` is undefined for implicit lookups using statements or
18067db96d56Sopenharmony_ci   operators such as ``super()[name]``.
18077db96d56Sopenharmony_ci
18087db96d56Sopenharmony_ci   Also note that, aside from the zero argument form, :func:`super` is not
18097db96d56Sopenharmony_ci   limited to use inside methods.  The two argument form specifies the
18107db96d56Sopenharmony_ci   arguments exactly and makes the appropriate references.  The zero
18117db96d56Sopenharmony_ci   argument form only works inside a class definition, as the compiler fills
18127db96d56Sopenharmony_ci   in the necessary details to correctly retrieve the class being defined,
18137db96d56Sopenharmony_ci   as well as accessing the current instance for ordinary methods.
18147db96d56Sopenharmony_ci
18157db96d56Sopenharmony_ci   For practical suggestions on how to design cooperative classes using
18167db96d56Sopenharmony_ci   :func:`super`, see `guide to using super()
18177db96d56Sopenharmony_ci   <https://rhettinger.wordpress.com/2011/05/26/super-considered-super/>`_.
18187db96d56Sopenharmony_ci
18197db96d56Sopenharmony_ci
18207db96d56Sopenharmony_ci.. _func-tuple:
18217db96d56Sopenharmony_ci.. class:: tuple()
18227db96d56Sopenharmony_ci           tuple(iterable)
18237db96d56Sopenharmony_ci   :noindex:
18247db96d56Sopenharmony_ci
18257db96d56Sopenharmony_ci   Rather than being a function, :class:`tuple` is actually an immutable
18267db96d56Sopenharmony_ci   sequence type, as documented in :ref:`typesseq-tuple` and :ref:`typesseq`.
18277db96d56Sopenharmony_ci
18287db96d56Sopenharmony_ci
18297db96d56Sopenharmony_ci.. class:: type(object)
18307db96d56Sopenharmony_ci           type(name, bases, dict, **kwds)
18317db96d56Sopenharmony_ci
18327db96d56Sopenharmony_ci   .. index:: pair: object; type
18337db96d56Sopenharmony_ci
18347db96d56Sopenharmony_ci   With one argument, return the type of an *object*.  The return value is a
18357db96d56Sopenharmony_ci   type object and generally the same object as returned by
18367db96d56Sopenharmony_ci   :attr:`object.__class__ <instance.__class__>`.
18377db96d56Sopenharmony_ci
18387db96d56Sopenharmony_ci   The :func:`isinstance` built-in function is recommended for testing the type
18397db96d56Sopenharmony_ci   of an object, because it takes subclasses into account.
18407db96d56Sopenharmony_ci
18417db96d56Sopenharmony_ci
18427db96d56Sopenharmony_ci   With three arguments, return a new type object.  This is essentially a
18437db96d56Sopenharmony_ci   dynamic form of the :keyword:`class` statement. The *name* string is
18447db96d56Sopenharmony_ci   the class name and becomes the :attr:`~definition.__name__` attribute.
18457db96d56Sopenharmony_ci   The *bases* tuple contains the base classes and becomes the
18467db96d56Sopenharmony_ci   :attr:`~class.__bases__` attribute; if empty, :class:`object`, the
18477db96d56Sopenharmony_ci   ultimate base of all classes, is added.  The *dict* dictionary contains
18487db96d56Sopenharmony_ci   attribute and method definitions for the class body; it may be copied
18497db96d56Sopenharmony_ci   or wrapped before becoming the :attr:`~object.__dict__` attribute.
18507db96d56Sopenharmony_ci   The following two statements create identical :class:`type` objects:
18517db96d56Sopenharmony_ci
18527db96d56Sopenharmony_ci      >>> class X:
18537db96d56Sopenharmony_ci      ...     a = 1
18547db96d56Sopenharmony_ci      ...
18557db96d56Sopenharmony_ci      >>> X = type('X', (), dict(a=1))
18567db96d56Sopenharmony_ci
18577db96d56Sopenharmony_ci   See also :ref:`bltin-type-objects`.
18587db96d56Sopenharmony_ci
18597db96d56Sopenharmony_ci   Keyword arguments provided to the three argument form are passed to the
18607db96d56Sopenharmony_ci   appropriate metaclass machinery (usually :meth:`~object.__init_subclass__`)
18617db96d56Sopenharmony_ci   in the same way that keywords in a class
18627db96d56Sopenharmony_ci   definition (besides *metaclass*) would.
18637db96d56Sopenharmony_ci
18647db96d56Sopenharmony_ci   See also :ref:`class-customization`.
18657db96d56Sopenharmony_ci
18667db96d56Sopenharmony_ci   .. versionchanged:: 3.6
18677db96d56Sopenharmony_ci      Subclasses of :class:`type` which don't override ``type.__new__`` may no
18687db96d56Sopenharmony_ci      longer use the one-argument form to get the type of an object.
18697db96d56Sopenharmony_ci
18707db96d56Sopenharmony_ci.. function:: vars()
18717db96d56Sopenharmony_ci              vars(object)
18727db96d56Sopenharmony_ci
18737db96d56Sopenharmony_ci   Return the :attr:`~object.__dict__` attribute for a module, class, instance,
18747db96d56Sopenharmony_ci   or any other object with a :attr:`~object.__dict__` attribute.
18757db96d56Sopenharmony_ci
18767db96d56Sopenharmony_ci   Objects such as modules and instances have an updateable :attr:`~object.__dict__`
18777db96d56Sopenharmony_ci   attribute; however, other objects may have write restrictions on their
18787db96d56Sopenharmony_ci   :attr:`~object.__dict__` attributes (for example, classes use a
18797db96d56Sopenharmony_ci   :class:`types.MappingProxyType` to prevent direct dictionary updates).
18807db96d56Sopenharmony_ci
18817db96d56Sopenharmony_ci   Without an argument, :func:`vars` acts like :func:`locals`.  Note, the
18827db96d56Sopenharmony_ci   locals dictionary is only useful for reads since updates to the locals
18837db96d56Sopenharmony_ci   dictionary are ignored.
18847db96d56Sopenharmony_ci
18857db96d56Sopenharmony_ci   A :exc:`TypeError` exception is raised if an object is specified but
18867db96d56Sopenharmony_ci   it doesn't have a :attr:`~object.__dict__` attribute (for example, if
18877db96d56Sopenharmony_ci   its class defines the :attr:`~object.__slots__` attribute).
18887db96d56Sopenharmony_ci
18897db96d56Sopenharmony_ci.. function:: zip(*iterables, strict=False)
18907db96d56Sopenharmony_ci
18917db96d56Sopenharmony_ci   Iterate over several iterables in parallel, producing tuples with an item
18927db96d56Sopenharmony_ci   from each one.
18937db96d56Sopenharmony_ci
18947db96d56Sopenharmony_ci   Example::
18957db96d56Sopenharmony_ci
18967db96d56Sopenharmony_ci      >>> for item in zip([1, 2, 3], ['sugar', 'spice', 'everything nice']):
18977db96d56Sopenharmony_ci      ...     print(item)
18987db96d56Sopenharmony_ci      ...
18997db96d56Sopenharmony_ci      (1, 'sugar')
19007db96d56Sopenharmony_ci      (2, 'spice')
19017db96d56Sopenharmony_ci      (3, 'everything nice')
19027db96d56Sopenharmony_ci
19037db96d56Sopenharmony_ci   More formally: :func:`zip` returns an iterator of tuples, where the *i*-th
19047db96d56Sopenharmony_ci   tuple contains the *i*-th element from each of the argument iterables.
19057db96d56Sopenharmony_ci
19067db96d56Sopenharmony_ci   Another way to think of :func:`zip` is that it turns rows into columns, and
19077db96d56Sopenharmony_ci   columns into rows.  This is similar to `transposing a matrix
19087db96d56Sopenharmony_ci   <https://en.wikipedia.org/wiki/Transpose>`_.
19097db96d56Sopenharmony_ci
19107db96d56Sopenharmony_ci   :func:`zip` is lazy: The elements won't be processed until the iterable is
19117db96d56Sopenharmony_ci   iterated on, e.g. by a :keyword:`!for` loop or by wrapping in a
19127db96d56Sopenharmony_ci   :class:`list`.
19137db96d56Sopenharmony_ci
19147db96d56Sopenharmony_ci   One thing to consider is that the iterables passed to :func:`zip` could have
19157db96d56Sopenharmony_ci   different lengths; sometimes by design, and sometimes because of a bug in
19167db96d56Sopenharmony_ci   the code that prepared these iterables.  Python offers three different
19177db96d56Sopenharmony_ci   approaches to dealing with this issue:
19187db96d56Sopenharmony_ci
19197db96d56Sopenharmony_ci   * By default, :func:`zip` stops when the shortest iterable is exhausted.
19207db96d56Sopenharmony_ci     It will ignore the remaining items in the longer iterables, cutting off
19217db96d56Sopenharmony_ci     the result to the length of the shortest iterable::
19227db96d56Sopenharmony_ci
19237db96d56Sopenharmony_ci        >>> list(zip(range(3), ['fee', 'fi', 'fo', 'fum']))
19247db96d56Sopenharmony_ci        [(0, 'fee'), (1, 'fi'), (2, 'fo')]
19257db96d56Sopenharmony_ci
19267db96d56Sopenharmony_ci   * :func:`zip` is often used in cases where the iterables are assumed to be
19277db96d56Sopenharmony_ci     of equal length.  In such cases, it's recommended to use the ``strict=True``
19287db96d56Sopenharmony_ci     option. Its output is the same as regular :func:`zip`::
19297db96d56Sopenharmony_ci
19307db96d56Sopenharmony_ci        >>> list(zip(('a', 'b', 'c'), (1, 2, 3), strict=True))
19317db96d56Sopenharmony_ci        [('a', 1), ('b', 2), ('c', 3)]
19327db96d56Sopenharmony_ci
19337db96d56Sopenharmony_ci     Unlike the default behavior, it raises a :exc:`ValueError` if one iterable
19347db96d56Sopenharmony_ci     is exhausted before the others:
19357db96d56Sopenharmony_ci
19367db96d56Sopenharmony_ci        >>> for item in zip(range(3), ['fee', 'fi', 'fo', 'fum'], strict=True):  # doctest: +SKIP
19377db96d56Sopenharmony_ci        ...     print(item)
19387db96d56Sopenharmony_ci        ...
19397db96d56Sopenharmony_ci        (0, 'fee')
19407db96d56Sopenharmony_ci        (1, 'fi')
19417db96d56Sopenharmony_ci        (2, 'fo')
19427db96d56Sopenharmony_ci        Traceback (most recent call last):
19437db96d56Sopenharmony_ci          ...
19447db96d56Sopenharmony_ci        ValueError: zip() argument 2 is longer than argument 1
19457db96d56Sopenharmony_ci
19467db96d56Sopenharmony_ci     ..
19477db96d56Sopenharmony_ci        This doctest is disabled because doctest does not support capturing
19487db96d56Sopenharmony_ci        output and exceptions in the same code unit.
19497db96d56Sopenharmony_ci        https://github.com/python/cpython/issues/65382
19507db96d56Sopenharmony_ci
19517db96d56Sopenharmony_ci     Without the ``strict=True`` argument, any bug that results in iterables of
19527db96d56Sopenharmony_ci     different lengths will be silenced, possibly manifesting as a hard-to-find
19537db96d56Sopenharmony_ci     bug in another part of the program.
19547db96d56Sopenharmony_ci
19557db96d56Sopenharmony_ci   * Shorter iterables can be padded with a constant value to make all the
19567db96d56Sopenharmony_ci     iterables have the same length.  This is done by
19577db96d56Sopenharmony_ci     :func:`itertools.zip_longest`.
19587db96d56Sopenharmony_ci
19597db96d56Sopenharmony_ci   Edge cases: With a single iterable argument, :func:`zip` returns an
19607db96d56Sopenharmony_ci   iterator of 1-tuples.  With no arguments, it returns an empty iterator.
19617db96d56Sopenharmony_ci
19627db96d56Sopenharmony_ci   Tips and tricks:
19637db96d56Sopenharmony_ci
19647db96d56Sopenharmony_ci   * The left-to-right evaluation order of the iterables is guaranteed. This
19657db96d56Sopenharmony_ci     makes possible an idiom for clustering a data series into n-length groups
19667db96d56Sopenharmony_ci     using ``zip(*[iter(s)]*n, strict=True)``.  This repeats the *same* iterator
19677db96d56Sopenharmony_ci     ``n`` times so that each output tuple has the result of ``n`` calls to the
19687db96d56Sopenharmony_ci     iterator. This has the effect of dividing the input into n-length chunks.
19697db96d56Sopenharmony_ci
19707db96d56Sopenharmony_ci   * :func:`zip` in conjunction with the ``*`` operator can be used to unzip a
19717db96d56Sopenharmony_ci     list::
19727db96d56Sopenharmony_ci
19737db96d56Sopenharmony_ci        >>> x = [1, 2, 3]
19747db96d56Sopenharmony_ci        >>> y = [4, 5, 6]
19757db96d56Sopenharmony_ci        >>> list(zip(x, y))
19767db96d56Sopenharmony_ci        [(1, 4), (2, 5), (3, 6)]
19777db96d56Sopenharmony_ci        >>> x2, y2 = zip(*zip(x, y))
19787db96d56Sopenharmony_ci        >>> x == list(x2) and y == list(y2)
19797db96d56Sopenharmony_ci        True
19807db96d56Sopenharmony_ci
19817db96d56Sopenharmony_ci   .. versionchanged:: 3.10
19827db96d56Sopenharmony_ci      Added the ``strict`` argument.
19837db96d56Sopenharmony_ci
19847db96d56Sopenharmony_ci
19857db96d56Sopenharmony_ci.. function:: __import__(name, globals=None, locals=None, fromlist=(), level=0)
19867db96d56Sopenharmony_ci
19877db96d56Sopenharmony_ci   .. index::
19887db96d56Sopenharmony_ci      pair: statement; import
19897db96d56Sopenharmony_ci      pair: module; builtins
19907db96d56Sopenharmony_ci
19917db96d56Sopenharmony_ci   .. note::
19927db96d56Sopenharmony_ci
19937db96d56Sopenharmony_ci      This is an advanced function that is not needed in everyday Python
19947db96d56Sopenharmony_ci      programming, unlike :func:`importlib.import_module`.
19957db96d56Sopenharmony_ci
19967db96d56Sopenharmony_ci   This function is invoked by the :keyword:`import` statement.  It can be
19977db96d56Sopenharmony_ci   replaced (by importing the :mod:`builtins` module and assigning to
19987db96d56Sopenharmony_ci   ``builtins.__import__``) in order to change semantics of the
19997db96d56Sopenharmony_ci   :keyword:`!import` statement, but doing so is **strongly** discouraged as it
20007db96d56Sopenharmony_ci   is usually simpler to use import hooks (see :pep:`302`) to attain the same
20017db96d56Sopenharmony_ci   goals and does not cause issues with code which assumes the default import
20027db96d56Sopenharmony_ci   implementation is in use.  Direct use of :func:`__import__` is also
20037db96d56Sopenharmony_ci   discouraged in favor of :func:`importlib.import_module`.
20047db96d56Sopenharmony_ci
20057db96d56Sopenharmony_ci   The function imports the module *name*, potentially using the given *globals*
20067db96d56Sopenharmony_ci   and *locals* to determine how to interpret the name in a package context.
20077db96d56Sopenharmony_ci   The *fromlist* gives the names of objects or submodules that should be
20087db96d56Sopenharmony_ci   imported from the module given by *name*.  The standard implementation does
20097db96d56Sopenharmony_ci   not use its *locals* argument at all and uses its *globals* only to
20107db96d56Sopenharmony_ci   determine the package context of the :keyword:`import` statement.
20117db96d56Sopenharmony_ci
20127db96d56Sopenharmony_ci   *level* specifies whether to use absolute or relative imports. ``0`` (the
20137db96d56Sopenharmony_ci   default) means only perform absolute imports.  Positive values for
20147db96d56Sopenharmony_ci   *level* indicate the number of parent directories to search relative to the
20157db96d56Sopenharmony_ci   directory of the module calling :func:`__import__` (see :pep:`328` for the
20167db96d56Sopenharmony_ci   details).
20177db96d56Sopenharmony_ci
20187db96d56Sopenharmony_ci   When the *name* variable is of the form ``package.module``, normally, the
20197db96d56Sopenharmony_ci   top-level package (the name up till the first dot) is returned, *not* the
20207db96d56Sopenharmony_ci   module named by *name*.  However, when a non-empty *fromlist* argument is
20217db96d56Sopenharmony_ci   given, the module named by *name* is returned.
20227db96d56Sopenharmony_ci
20237db96d56Sopenharmony_ci   For example, the statement ``import spam`` results in bytecode resembling the
20247db96d56Sopenharmony_ci   following code::
20257db96d56Sopenharmony_ci
20267db96d56Sopenharmony_ci      spam = __import__('spam', globals(), locals(), [], 0)
20277db96d56Sopenharmony_ci
20287db96d56Sopenharmony_ci   The statement ``import spam.ham`` results in this call::
20297db96d56Sopenharmony_ci
20307db96d56Sopenharmony_ci      spam = __import__('spam.ham', globals(), locals(), [], 0)
20317db96d56Sopenharmony_ci
20327db96d56Sopenharmony_ci   Note how :func:`__import__` returns the toplevel module here because this is
20337db96d56Sopenharmony_ci   the object that is bound to a name by the :keyword:`import` statement.
20347db96d56Sopenharmony_ci
20357db96d56Sopenharmony_ci   On the other hand, the statement ``from spam.ham import eggs, sausage as
20367db96d56Sopenharmony_ci   saus`` results in ::
20377db96d56Sopenharmony_ci
20387db96d56Sopenharmony_ci      _temp = __import__('spam.ham', globals(), locals(), ['eggs', 'sausage'], 0)
20397db96d56Sopenharmony_ci      eggs = _temp.eggs
20407db96d56Sopenharmony_ci      saus = _temp.sausage
20417db96d56Sopenharmony_ci
20427db96d56Sopenharmony_ci   Here, the ``spam.ham`` module is returned from :func:`__import__`.  From this
20437db96d56Sopenharmony_ci   object, the names to import are retrieved and assigned to their respective
20447db96d56Sopenharmony_ci   names.
20457db96d56Sopenharmony_ci
20467db96d56Sopenharmony_ci   If you simply want to import a module (potentially within a package) by name,
20477db96d56Sopenharmony_ci   use :func:`importlib.import_module`.
20487db96d56Sopenharmony_ci
20497db96d56Sopenharmony_ci   .. versionchanged:: 3.3
20507db96d56Sopenharmony_ci      Negative values for *level* are no longer supported (which also changes
20517db96d56Sopenharmony_ci      the default value to 0).
20527db96d56Sopenharmony_ci
20537db96d56Sopenharmony_ci   .. versionchanged:: 3.9
20547db96d56Sopenharmony_ci      When the command line options :option:`-E` or :option:`-I` are being used,
20557db96d56Sopenharmony_ci      the environment variable :envvar:`PYTHONCASEOK` is now ignored.
20567db96d56Sopenharmony_ci
20577db96d56Sopenharmony_ci.. rubric:: Footnotes
20587db96d56Sopenharmony_ci
20597db96d56Sopenharmony_ci.. [#] Note that the parser only accepts the Unix-style end of line convention.
20607db96d56Sopenharmony_ci   If you are reading the code from a file, make sure to use newline conversion
20617db96d56Sopenharmony_ci   mode to convert Windows or Mac-style newlines.
2062