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