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