• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1
2.. _simple:
3
4*****************
5Simple statements
6*****************
7
8.. index:: pair: simple; statement
9
10Simple statements are comprised within a single logical line. Several simple
11statements may occur on a single line separated by semicolons.  The syntax for
12simple statements is:
13
14.. productionlist::
15   simple_stmt: `expression_stmt`
16              : | `assert_stmt`
17              : | `assignment_stmt`
18              : | `augmented_assignment_stmt`
19              : | `pass_stmt`
20              : | `del_stmt`
21              : | `print_stmt`
22              : | `return_stmt`
23              : | `yield_stmt`
24              : | `raise_stmt`
25              : | `break_stmt`
26              : | `continue_stmt`
27              : | `import_stmt`
28              : | `global_stmt`
29              : | `exec_stmt`
30
31
32.. _exprstmts:
33
34Expression statements
35=====================
36
37.. index::
38   pair: expression; statement
39   pair: expression; list
40
41Expression statements are used (mostly interactively) to compute and write a
42value, or (usually) to call a procedure (a function that returns no meaningful
43result; in Python, procedures return the value ``None``).  Other uses of
44expression statements are allowed and occasionally useful.  The syntax for an
45expression statement is:
46
47.. productionlist::
48   expression_stmt: `expression_list`
49
50An expression statement evaluates the expression list (which may be a single
51expression).
52
53.. index::
54   builtin: repr
55   object: None
56   pair: string; conversion
57   single: output
58   pair: standard; output
59   pair: writing; values
60   pair: procedure; call
61
62In interactive mode, if the value is not ``None``, it is converted to a string
63using the built-in :func:`repr` function and the resulting string is written to
64standard output (see section :ref:`print`) on a line by itself.  (Expression
65statements yielding ``None`` are not written, so that procedure calls do not
66cause any output.)
67
68
69.. _assignment:
70
71Assignment statements
72=====================
73
74.. index::
75   single: =; assignment statement
76   pair: assignment; statement
77   pair: binding; name
78   pair: rebinding; name
79   object: mutable
80   pair: attribute; assignment
81
82Assignment statements are used to (re)bind names to values and to modify
83attributes or items of mutable objects:
84
85.. productionlist::
86   assignment_stmt: (`target_list` "=")+ (`expression_list` | `yield_expression`)
87   target_list: `target` ("," `target`)* [","]
88   target: `identifier`
89         : | "(" `target_list` ")"
90         : | "[" [`target_list`] "]"
91         : | `attributeref`
92         : | `subscription`
93         : | `slicing`
94
95(See section :ref:`primaries` for the syntax definitions for the last three
96symbols.)
97
98.. index:: pair: expression; list
99
100An assignment statement evaluates the expression list (remember that this can be
101a single expression or a comma-separated list, the latter yielding a tuple) and
102assigns the single resulting object to each of the target lists, from left to
103right.
104
105.. index::
106   single: target
107   pair: target; list
108
109Assignment is defined recursively depending on the form of the target (list).
110When a target is part of a mutable object (an attribute reference, subscription
111or slicing), the mutable object must ultimately perform the assignment and
112decide about its validity, and may raise an exception if the assignment is
113unacceptable.  The rules observed by various types and the exceptions raised are
114given with the definition of the object types (see section :ref:`types`).
115
116.. index:: triple: target; list; assignment
117
118Assignment of an object to a target list is recursively defined as follows.
119
120* If the target list is a single target: The object is assigned to that target.
121
122* If the target list is a comma-separated list of targets: The object must be an
123  iterable with the same number of items as there are targets in the target list,
124  and the items are assigned, from left to right, to the corresponding targets.
125
126Assignment of an object to a single target is recursively defined as follows.
127
128* If the target is an identifier (name):
129
130    .. index:: statement: global
131
132  * If the name does not occur in a :keyword:`global` statement in the current
133    code block: the name is bound to the object in the current local namespace.
134
135  * Otherwise: the name is bound to the object in the current global namespace.
136
137  .. index:: single: destructor
138
139  The name is rebound if it was already bound.  This may cause the reference count
140  for the object previously bound to the name to reach zero, causing the object to
141  be deallocated and its destructor (if it has one) to be called.
142
143* If the target is a target list enclosed in parentheses or in square brackets:
144  The object must be an iterable with the same number of items as there are
145  targets in the target list, and its items are assigned, from left to right,
146  to the corresponding targets.
147
148  .. index:: pair: attribute; assignment
149
150* If the target is an attribute reference: The primary expression in the
151  reference is evaluated.  It should yield an object with assignable attributes;
152  if this is not the case, :exc:`TypeError` is raised.  That object is then
153  asked to assign the assigned object to the given attribute; if it cannot
154  perform the assignment, it raises an exception (usually but not necessarily
155  :exc:`AttributeError`).
156
157  .. _attr-target-note:
158
159  Note: If the object is a class instance and the attribute reference occurs on
160  both sides of the assignment operator, the RHS expression, ``a.x`` can access
161  either an instance attribute or (if no instance attribute exists) a class
162  attribute.  The LHS target ``a.x`` is always set as an instance attribute,
163  creating it if necessary.  Thus, the two occurrences of ``a.x`` do not
164  necessarily refer to the same attribute: if the RHS expression refers to a
165  class attribute, the LHS creates a new instance attribute as the target of the
166  assignment::
167
168     class Cls:
169         x = 3             # class variable
170     inst = Cls()
171     inst.x = inst.x + 1   # writes inst.x as 4 leaving Cls.x as 3
172
173  This description does not necessarily apply to descriptor attributes, such as
174  properties created with :func:`property`.
175
176  .. index::
177     pair: subscription; assignment
178     object: mutable
179
180* If the target is a subscription: The primary expression in the reference is
181  evaluated.  It should yield either a mutable sequence object (such as a list) or
182  a mapping object (such as a dictionary). Next, the subscript expression is
183  evaluated.
184
185  .. index::
186     object: sequence
187     object: list
188
189  If the primary is a mutable sequence object (such as a list), the subscript must
190  yield a plain integer.  If it is negative, the sequence's length is added to it.
191  The resulting value must be a nonnegative integer less than the sequence's
192  length, and the sequence is asked to assign the assigned object to its item with
193  that index.  If the index is out of range, :exc:`IndexError` is raised
194  (assignment to a subscripted sequence cannot add new items to a list).
195
196  .. index::
197     object: mapping
198     object: dictionary
199
200  If the primary is a mapping object (such as a dictionary), the subscript must
201  have a type compatible with the mapping's key type, and the mapping is then
202  asked to create a key/datum pair which maps the subscript to the assigned
203  object.  This can either replace an existing key/value pair with the same key
204  value, or insert a new key/value pair (if no key with the same value existed).
205
206  .. index:: pair: slicing; assignment
207
208* If the target is a slicing: The primary expression in the reference is
209  evaluated.  It should yield a mutable sequence object (such as a list).  The
210  assigned object should be a sequence object of the same type.  Next, the lower
211  and upper bound expressions are evaluated, insofar they are present; defaults
212  are zero and the sequence's length.  The bounds should evaluate to (small)
213  integers.  If either bound is negative, the sequence's length is added to it.
214  The resulting bounds are clipped to lie between zero and the sequence's length,
215  inclusive.  Finally, the sequence object is asked to replace the slice with the
216  items of the assigned sequence.  The length of the slice may be different from
217  the length of the assigned sequence, thus changing the length of the target
218  sequence, if the object allows it.
219
220.. impl-detail::
221
222   In the current implementation, the syntax for targets is taken to be the same
223   as for expressions, and invalid syntax is rejected during the code generation
224   phase, causing less detailed error messages.
225
226WARNING: Although the definition of assignment implies that overlaps between the
227left-hand side and the right-hand side are 'safe' (for example ``a, b = b, a``
228swaps two variables), overlaps *within* the collection of assigned-to variables
229are not safe!  For instance, the following program prints ``[0, 2]``::
230
231   x = [0, 1]
232   i = 0
233   i, x[i] = 1, 2
234   print x
235
236
237.. _augassign:
238
239Augmented assignment statements
240-------------------------------
241
242.. index::
243   pair: augmented; assignment
244   single: statement; assignment, augmented
245   single: +=; augmented assignment
246   single: -=; augmented assignment
247   single: *=; augmented assignment
248   single: /=; augmented assignment
249   single: %=; augmented assignment
250   single: &=; augmented assignment
251   single: ^=; augmented assignment
252   single: |=; augmented assignment
253   single: **=; augmented assignment
254   single: //=; augmented assignment
255   single: >>=; augmented assignment
256   single: <<=; augmented assignment
257
258Augmented assignment is the combination, in a single statement, of a binary
259operation and an assignment statement:
260
261.. productionlist::
262   augmented_assignment_stmt: `augtarget` `augop` (`expression_list` | `yield_expression`)
263   augtarget: `identifier` | `attributeref` | `subscription` | `slicing`
264   augop: "+=" | "-=" | "*=" | "/=" | "//=" | "%=" | "**="
265        : | ">>=" | "<<=" | "&=" | "^=" | "|="
266
267(See section :ref:`primaries` for the syntax definitions for the last three
268symbols.)
269
270An augmented assignment evaluates the target (which, unlike normal assignment
271statements, cannot be an unpacking) and the expression list, performs the binary
272operation specific to the type of assignment on the two operands, and assigns
273the result to the original target.  The target is only evaluated once.
274
275An augmented assignment expression like ``x += 1`` can be rewritten as ``x = x +
2761`` to achieve a similar, but not exactly equal effect. In the augmented
277version, ``x`` is only evaluated once. Also, when possible, the actual operation
278is performed *in-place*, meaning that rather than creating a new object and
279assigning that to the target, the old object is modified instead.
280
281With the exception of assigning to tuples and multiple targets in a single
282statement, the assignment done by augmented assignment statements is handled the
283same way as normal assignments. Similarly, with the exception of the possible
284*in-place* behavior, the binary operation performed by augmented assignment is
285the same as the normal binary operations.
286
287For targets which are attribute references, the same :ref:`caveat about class
288and instance attributes <attr-target-note>` applies as for regular assignments.
289
290
291.. _assert:
292
293The :keyword:`assert` statement
294===============================
295
296.. index::
297   statement: assert
298   pair: debugging; assertions
299
300Assert statements are a convenient way to insert debugging assertions into a
301program:
302
303.. productionlist::
304   assert_stmt: "assert" `expression` ["," `expression`]
305
306The simple form, ``assert expression``, is equivalent to ::
307
308   if __debug__:
309       if not expression: raise AssertionError
310
311The extended form, ``assert expression1, expression2``, is equivalent to ::
312
313   if __debug__:
314       if not expression1: raise AssertionError(expression2)
315
316.. index::
317   single: __debug__
318   exception: AssertionError
319
320These equivalences assume that :const:`__debug__` and :exc:`AssertionError` refer to
321the built-in variables with those names.  In the current implementation, the
322built-in variable :const:`__debug__` is ``True`` under normal circumstances,
323``False`` when optimization is requested (command line option -O).  The current
324code generator emits no code for an assert statement when optimization is
325requested at compile time.  Note that it is unnecessary to include the source
326code for the expression that failed in the error message; it will be displayed
327as part of the stack trace.
328
329Assignments to :const:`__debug__` are illegal.  The value for the built-in variable
330is determined when the interpreter starts.
331
332
333.. _pass:
334
335The :keyword:`pass` statement
336=============================
337
338.. index::
339   statement: pass
340   pair: null; operation
341
342.. productionlist::
343   pass_stmt: "pass"
344
345:keyword:`pass` is a null operation --- when it is executed, nothing happens.
346It is useful as a placeholder when a statement is required syntactically, but no
347code needs to be executed, for example::
348
349   def f(arg): pass    # a function that does nothing (yet)
350
351   class C: pass       # a class with no methods (yet)
352
353
354.. _del:
355
356The :keyword:`del` statement
357============================
358
359.. index::
360   statement: del
361   pair: deletion; target
362   triple: deletion; target; list
363
364.. productionlist::
365   del_stmt: "del" `target_list`
366
367Deletion is recursively defined very similar to the way assignment is defined.
368Rather than spelling it out in full details, here are some hints.
369
370Deletion of a target list recursively deletes each target, from left to right.
371
372.. index::
373   statement: global
374   pair: unbinding; name
375
376Deletion of a name removes the binding of that name  from the local or global
377namespace, depending on whether the name occurs in a :keyword:`global` statement
378in the same code block.  If the name is unbound, a :exc:`NameError` exception
379will be raised.
380
381.. index:: pair: free; variable
382
383It is illegal to delete a name from the local namespace if it occurs as a free
384variable in a nested block.
385
386.. index:: pair: attribute; deletion
387
388Deletion of attribute references, subscriptions and slicings is passed to the
389primary object involved; deletion of a slicing is in general equivalent to
390assignment of an empty slice of the right type (but even this is determined by
391the sliced object).
392
393
394.. _print:
395
396The :keyword:`print` statement
397==============================
398
399.. index:: statement: print
400
401.. productionlist::
402   print_stmt: "print" ([`expression` ("," `expression`)* [","]]
403             : | ">>" `expression` [("," `expression`)+ [","]])
404
405:keyword:`print` evaluates each expression in turn and writes the resulting
406object to standard output (see below).  If an object is not a string, it is
407first converted to a string using the rules for string conversions.  The
408(resulting or original) string is then written.  A space is written before each
409object is (converted and) written, unless the output system believes it is
410positioned at the beginning of a line.  This is the case (1) when no characters
411have yet been written to standard output, (2) when the last character written to
412standard output is a whitespace character except ``' '``, or (3) when the last
413write operation on standard output was not a :keyword:`print` statement.
414(In some cases it may be functional to write an empty string to standard output
415for this reason.)
416
417.. note::
418
419   Objects which act like file objects but which are not the built-in file objects
420   often do not properly emulate this aspect of the file object's behavior, so it
421   is best not to rely on this.
422
423.. index::
424   single: output
425   pair: writing; values
426   pair: trailing; comma
427   pair: newline; suppression
428
429A ``'\n'`` character is written at the end, unless the :keyword:`print`
430statement ends with a comma.  This is the only action if the statement contains
431just the keyword :keyword:`print`.
432
433.. index::
434   pair: standard; output
435   module: sys
436   single: stdout (in module sys)
437   exception: RuntimeError
438
439Standard output is defined as the file object named ``stdout`` in the built-in
440module :mod:`sys`.  If no such object exists, or if it does not have a
441:meth:`write` method, a :exc:`RuntimeError` exception is raised.
442
443.. index:: single: extended print statement
444
445:keyword:`print` also has an extended form, defined by the second portion of the
446syntax described above. This form is sometimes referred to as ":keyword:`print`
447chevron." In this form, the first expression after the ``>>`` must evaluate to a
448"file-like" object, specifically an object that has a :meth:`write` method as
449described above.  With this extended form, the subsequent expressions are
450printed to this file object.  If the first expression evaluates to ``None``,
451then ``sys.stdout`` is used as the file for output.
452
453
454.. _return:
455
456The :keyword:`return` statement
457===============================
458
459.. index::
460   statement: return
461   pair: function; definition
462   pair: class; definition
463
464.. productionlist::
465   return_stmt: "return" [`expression_list`]
466
467:keyword:`return` may only occur syntactically nested in a function definition,
468not within a nested class definition.
469
470If an expression list is present, it is evaluated, else ``None`` is substituted.
471
472:keyword:`return` leaves the current function call with the expression list (or
473``None``) as return value.
474
475.. index:: keyword: finally
476
477When :keyword:`return` passes control out of a :keyword:`try` statement with a
478:keyword:`finally` clause, that :keyword:`finally` clause is executed before
479really leaving the function.
480
481In a generator function, the :keyword:`return` statement is not allowed to
482include an :token:`expression_list`.  In that context, a bare :keyword:`return`
483indicates that the generator is done and will cause :exc:`StopIteration` to be
484raised.
485
486
487.. _yield:
488
489The :keyword:`yield` statement
490==============================
491
492.. index::
493   statement: yield
494   single: generator; function
495   single: generator; iterator
496   single: function; generator
497   exception: StopIteration
498
499.. productionlist::
500   yield_stmt: `yield_expression`
501
502The :keyword:`yield` statement is only used when defining a generator function,
503and is only used in the body of the generator function. Using a :keyword:`yield`
504statement in a function definition is sufficient to cause that definition to
505create a generator function instead of a normal function.
506
507When a generator function is called, it returns an iterator known as a generator
508iterator, or more commonly, a generator.  The body of the generator function is
509executed by calling the generator's :meth:`~generator.next` method repeatedly
510until it raises an exception.
511
512When a :keyword:`yield` statement is executed, the state of the generator is
513frozen and the value of :token:`expression_list` is returned to
514:meth:`~generator.next`'s caller.  By "frozen" we mean that all local state is
515retained, including the current bindings of local variables, the instruction
516pointer, and the internal evaluation stack: enough information is saved so that
517the next time :meth:`~generator.next` is invoked, the function can proceed
518exactly as if the :keyword:`yield` statement were just another external call.
519
520As of Python version 2.5, the :keyword:`yield` statement is now allowed in the
521:keyword:`try` clause of a :keyword:`try` ...  :keyword:`finally` construct.  If
522the generator is not resumed before it is finalized (by reaching a zero
523reference count or by being garbage collected), the generator-iterator's
524:meth:`close` method will be called, allowing any pending :keyword:`finally`
525clauses to execute.
526
527For full details of :keyword:`yield` semantics, refer to the :ref:`yieldexpr`
528section.
529
530.. note::
531
532   In Python 2.2, the :keyword:`yield` statement was only allowed when the
533   ``generators`` feature has been enabled.  This ``__future__``
534   import statement was used to enable the feature::
535
536      from __future__ import generators
537
538
539.. seealso::
540
541   :pep:`255` - Simple Generators
542      The proposal for adding generators and the :keyword:`yield` statement to Python.
543
544   :pep:`342` - Coroutines via Enhanced Generators
545      The proposal that, among other generator enhancements, proposed allowing
546      :keyword:`yield` to appear inside a :keyword:`try` ... :keyword:`finally` block.
547
548
549.. _raise:
550
551The :keyword:`raise` statement
552==============================
553
554.. index::
555   statement: raise
556   single: exception
557   pair: raising; exception
558
559.. productionlist::
560   raise_stmt: "raise" [`expression` ["," `expression` ["," `expression`]]]
561
562If no expressions are present, :keyword:`raise` re-raises the last exception
563that was active in the current scope.  If no exception is active in the current
564scope, a :exc:`TypeError` exception is raised indicating that this is an error
565(if running under IDLE, a :exc:`Queue.Empty` exception is raised instead).
566
567Otherwise, :keyword:`raise` evaluates the expressions to get three objects,
568using ``None`` as the value of omitted expressions.  The first two objects are
569used to determine the *type* and *value* of the exception.
570
571If the first object is an instance, the type of the exception is the class of
572the instance, the instance itself is the value, and the second object must be
573``None``.
574
575If the first object is a class, it becomes the type of the exception. The second
576object is used to determine the exception value: If it is an instance of the
577class, the instance becomes the exception value. If the second object is a
578tuple, it is used as the argument list for the class constructor; if it is
579``None``, an empty argument list is used, and any other object is treated as a
580single argument to the constructor.  The instance so created by calling the
581constructor is used as the exception value.
582
583.. index:: object: traceback
584
585If a third object is present and not ``None``, it must be a traceback object
586(see section :ref:`types`), and it is substituted instead of the current
587location as the place where the exception occurred.  If the third object is
588present and not a traceback object or ``None``, a :exc:`TypeError` exception is
589raised.  The three-expression form of :keyword:`raise` is useful to re-raise an
590exception transparently in an except clause, but :keyword:`raise` with no
591expressions should be preferred if the exception to be re-raised was the most
592recently active exception in the current scope.
593
594Additional information on exceptions can be found in section :ref:`exceptions`,
595and information about handling exceptions is in section :ref:`try`.
596
597
598.. _break:
599
600The :keyword:`break` statement
601==============================
602
603.. index::
604   statement: break
605   statement: for
606   statement: while
607   pair: loop; statement
608
609.. productionlist::
610   break_stmt: "break"
611
612:keyword:`break` may only occur syntactically nested in a :keyword:`for` or
613:keyword:`while` loop, but not nested in a function or class definition within
614that loop.
615
616.. index:: keyword: else
617
618It terminates the nearest enclosing loop, skipping the optional :keyword:`else`
619clause if the loop has one.
620
621.. index:: pair: loop control; target
622
623If a :keyword:`for` loop is terminated by :keyword:`break`, the loop control
624target keeps its current value.
625
626.. index:: keyword: finally
627
628When :keyword:`break` passes control out of a :keyword:`try` statement with a
629:keyword:`finally` clause, that :keyword:`finally` clause is executed before
630really leaving the loop.
631
632
633.. _continue:
634
635The :keyword:`continue` statement
636=================================
637
638.. index::
639   statement: continue
640   statement: for
641   statement: while
642   pair: loop; statement
643   keyword: finally
644
645.. productionlist::
646   continue_stmt: "continue"
647
648:keyword:`continue` may only occur syntactically nested in a :keyword:`for` or
649:keyword:`while` loop, but not nested in a function or class definition or
650:keyword:`finally` clause within that loop.  It continues with the next
651cycle of the nearest enclosing loop.
652
653When :keyword:`continue` passes control out of a :keyword:`try` statement with a
654:keyword:`finally` clause, that :keyword:`finally` clause is executed before
655really starting the next loop cycle.
656
657
658.. _import:
659.. _from:
660
661The :keyword:`import` statement
662===============================
663
664.. index::
665   statement: import
666   single: module; importing
667   pair: name; binding
668   keyword: from
669   single: as; import statement
670
671.. productionlist::
672   import_stmt: "import" `module` ["as" `name`] ( "," `module` ["as" `name`] )*
673              : | "from" `relative_module` "import" `identifier` ["as" `name`]
674              : ( "," `identifier` ["as" `name`] )*
675              : | "from" `relative_module` "import" "(" `identifier` ["as" `name`]
676              : ( "," `identifier` ["as" `name`] )* [","] ")"
677              : | "from" `module` "import" "*"
678   module: (`identifier` ".")* `identifier`
679   relative_module: "."* `module` | "."+
680   name: `identifier`
681
682Import statements are executed in two steps: (1) find a module, and initialize
683it if necessary; (2) define a name or names in the local namespace (of the scope
684where the :keyword:`import` statement occurs). The statement comes in two
685forms differing on whether it uses the :keyword:`from` keyword. The first form
686(without :keyword:`from`) repeats these steps for each identifier in the list.
687The form with :keyword:`from` performs step (1) once, and then performs step
688(2) repeatedly.
689
690.. index::
691    single: package
692
693To understand how step (1) occurs, one must first understand how Python handles
694hierarchical naming of modules. To help organize modules and provide a
695hierarchy in naming, Python has a concept of packages. A package can contain
696other packages and modules while modules cannot contain other modules or
697packages. From a file system perspective, packages are directories and modules
698are files.
699
700.. index::
701    single: sys.modules
702
703Once the name of the module is known (unless otherwise specified, the term
704"module" will refer to both packages and modules), searching
705for the module or package can begin. The first place checked is
706:data:`sys.modules`, the cache of all modules that have been imported
707previously. If the module is found there then it is used in step (2) of import.
708
709.. index::
710    single: sys.meta_path
711    single: finder
712    pair: finder; find_module
713    single: __path__
714
715If the module is not found in the cache, then :data:`sys.meta_path` is searched
716(the specification for :data:`sys.meta_path` can be found in :pep:`302`).
717The object is a list of :term:`finder` objects which are queried in order as to
718whether they know how to load the module by calling their :meth:`find_module`
719method with the name of the module. If the module happens to be contained
720within a package (as denoted by the existence of a dot in the name), then a
721second argument to :meth:`find_module` is given as the value of the
722:attr:`__path__` attribute from the parent package (everything up to the last
723dot in the name of the module being imported). If a finder can find the module
724it returns a :term:`loader` (discussed later) or returns ``None``.
725
726.. index::
727    single: sys.path_hooks
728    single: sys.path_importer_cache
729    single: sys.path
730
731If none of the finders on :data:`sys.meta_path` are able to find the module
732then some implicitly defined finders are queried. Implementations of Python
733vary in what implicit meta path finders are defined. The one they all do
734define, though, is one that handles :data:`sys.path_hooks`,
735:data:`sys.path_importer_cache`, and :data:`sys.path`.
736
737The implicit finder searches for the requested module in the "paths" specified
738in one of two places ("paths" do not have to be file system paths). If the
739module being imported is supposed to be contained within a package then the
740second argument passed to :meth:`find_module`, :attr:`__path__` on the parent
741package, is used as the source of paths. If the module is not contained in a
742package then :data:`sys.path` is used as the source of paths.
743
744Once the source of paths is chosen it is iterated over to find a finder that
745can handle that path. The dict at :data:`sys.path_importer_cache` caches
746finders for paths and is checked for a finder. If the path does not have a
747finder cached then :data:`sys.path_hooks` is searched by calling each object in
748the list with a single argument of the path, returning a finder or raises
749:exc:`ImportError`. If a finder is returned then it is cached in
750:data:`sys.path_importer_cache` and then used for that path entry. If no finder
751can be found but the path exists then a value of ``None`` is
752stored in :data:`sys.path_importer_cache` to signify that an implicit,
753file-based finder that handles modules stored as individual files should be
754used for that path. If the path does not exist then a finder which always
755returns ``None`` is placed in the cache for the path.
756
757.. index::
758    single: loader
759    pair: loader; load_module
760    exception: ImportError
761
762If no finder can find the module then :exc:`ImportError` is raised. Otherwise
763some finder returned a loader whose :meth:`load_module` method is called with
764the name of the module to load (see :pep:`302` for the original definition of
765loaders). A loader has several responsibilities to perform on a module it
766loads. First, if the module already exists in :data:`sys.modules` (a
767possibility if the loader is called outside of the import machinery) then it
768is to use that module for initialization and not a new module. But if the
769module does not exist in :data:`sys.modules` then it is to be added to that
770dict before initialization begins. If an error occurs during loading of the
771module and it was added to :data:`sys.modules` it is to be removed from the
772dict. If an error occurs but the module was already in :data:`sys.modules` it
773is left in the dict.
774
775.. index::
776    single: __name__
777    single: __file__
778    single: __path__
779    single: __package__
780    single: __loader__
781
782The loader must set several attributes on the module. :data:`__name__` is to be
783set to the name of the module. :data:`__file__` is to be the "path" to the file
784unless the module is built-in (and thus listed in
785:data:`sys.builtin_module_names`) in which case the attribute is not set.
786If what is being imported is a package then :data:`__path__` is to be set to a
787list of paths to be searched when looking for modules and packages contained
788within the package being imported. :data:`__package__` is optional but should
789be set to the name of package that contains the module or package (the empty
790string is used for module not contained in a package). :data:`__loader__` is
791also optional but should be set to the loader object that is loading the
792module.
793
794.. index::
795    exception: ImportError
796
797If an error occurs during loading then the loader raises :exc:`ImportError` if
798some other exception is not already being propagated. Otherwise the loader
799returns the module that was loaded and initialized.
800
801When step (1) finishes without raising an exception, step (2) can begin.
802
803The first form of :keyword:`import` statement binds the module name in the local
804namespace to the module object, and then goes on to import the next identifier,
805if any.  If the module name is followed by :keyword:`as`, the name following
806:keyword:`as` is used as the local name for the module.
807
808.. index::
809   pair: name; binding
810   exception: ImportError
811
812The :keyword:`from` form does not bind the module name: it goes through the list
813of identifiers, looks each one of them up in the module found in step (1), and
814binds the name in the local namespace to the object thus found.  As with the
815first form of :keyword:`import`, an alternate local name can be supplied by
816specifying ":keyword:`as` localname".  If a name is not found,
817:exc:`ImportError` is raised.  If the list of identifiers is replaced by a star
818(``'*'``), all public names defined in the module are bound in the local
819namespace of the :keyword:`import` statement..
820
821.. index:: single: __all__ (optional module attribute)
822
823The *public names* defined by a module are determined by checking the module's
824namespace for a variable named ``__all__``; if defined, it must be a sequence of
825strings which are names defined or imported by that module.  The names given in
826``__all__`` are all considered public and are required to exist.  If ``__all__``
827is not defined, the set of public names includes all names found in the module's
828namespace which do not begin with an underscore character (``'_'``).
829``__all__`` should contain the entire public API. It is intended to avoid
830accidentally exporting items that are not part of the API (such as library
831modules which were imported and used within the module).
832
833The :keyword:`from` form with ``*`` may only occur in a module scope.  If the
834wild card form of import --- ``import *`` --- is used in a function and the
835function contains or is a nested block with free variables, the compiler will
836raise a :exc:`SyntaxError`.
837
838.. index::
839    single: relative; import
840
841When specifying what module to import you do not have to specify the absolute
842name of the module. When a module or package is contained within another
843package it is possible to make a relative import within the same top package
844without having to mention the package name. By using leading dots in the
845specified module or package after :keyword:`from` you can specify how high to
846traverse up the current package hierarchy without specifying exact names. One
847leading dot means the current package where the module making the import
848exists. Two dots means up one package level. Three dots is up two levels, etc.
849So if you execute ``from . import mod`` from a module in the ``pkg`` package
850then you will end up importing ``pkg.mod``. If you execute ``from ..subpkg2
851import mod`` from within ``pkg.subpkg1`` you will import ``pkg.subpkg2.mod``.
852The specification for relative imports is contained within :pep:`328`.
853
854:func:`importlib.import_module` is provided to support applications that
855determine which modules need to be loaded dynamically.
856
857
858.. _future:
859
860Future statements
861-----------------
862
863.. index:: pair: future; statement
864
865A :dfn:`future statement` is a directive to the compiler that a particular
866module should be compiled using syntax or semantics that will be available in a
867specified future release of Python.  The future statement is intended to ease
868migration to future versions of Python that introduce incompatible changes to
869the language.  It allows use of the new features on a per-module basis before
870the release in which the feature becomes standard.
871
872.. productionlist:: *
873   future_statement: "from" "__future__" "import" feature ["as" name]
874                   : ("," feature ["as" name])*
875                   : | "from" "__future__" "import" "(" feature ["as" name]
876                   : ("," feature ["as" name])* [","] ")"
877   feature: identifier
878   name: identifier
879
880A future statement must appear near the top of the module.  The only lines that
881can appear before a future statement are:
882
883* the module docstring (if any),
884* comments,
885* blank lines, and
886* other future statements.
887
888The features recognized by Python 2.6 are ``unicode_literals``,
889``print_function``, ``absolute_import``, ``division``, ``generators``,
890``nested_scopes`` and ``with_statement``.  ``generators``, ``with_statement``,
891``nested_scopes`` are redundant in Python version 2.6 and above because they are
892always enabled.
893
894A future statement is recognized and treated specially at compile time: Changes
895to the semantics of core constructs are often implemented by generating
896different code.  It may even be the case that a new feature introduces new
897incompatible syntax (such as a new reserved word), in which case the compiler
898may need to parse the module differently.  Such decisions cannot be pushed off
899until runtime.
900
901For any given release, the compiler knows which feature names have been defined,
902and raises a compile-time error if a future statement contains a feature not
903known to it.
904
905The direct runtime semantics are the same as for any import statement: there is
906a standard module :mod:`__future__`, described later, and it will be imported in
907the usual way at the time the future statement is executed.
908
909The interesting runtime semantics depend on the specific feature enabled by the
910future statement.
911
912Note that there is nothing special about the statement::
913
914   import __future__ [as name]
915
916That is not a future statement; it's an ordinary import statement with no
917special semantics or syntax restrictions.
918
919Code compiled by an :keyword:`exec` statement or calls to the built-in functions
920:func:`compile` and :func:`execfile` that occur in a module :mod:`M` containing
921a future statement will, by default, use the new  syntax or semantics associated
922with the future statement.  This can, starting with Python 2.2 be controlled by
923optional arguments to :func:`compile` --- see the documentation of that function
924for details.
925
926A future statement typed at an interactive interpreter prompt will take effect
927for the rest of the interpreter session.  If an interpreter is started with the
928:option:`-i` option, is passed a script name to execute, and the script includes
929a future statement, it will be in effect in the interactive session started
930after the script is executed.
931
932.. seealso::
933
934   :pep:`236` - Back to the __future__
935      The original proposal for the __future__ mechanism.
936
937
938.. _global:
939
940The :keyword:`global` statement
941===============================
942
943.. index::
944   statement: global
945   triple: global; name; binding
946
947.. productionlist::
948   global_stmt: "global" `identifier` ("," `identifier`)*
949
950The :keyword:`global` statement is a declaration which holds for the entire
951current code block.  It means that the listed identifiers are to be interpreted
952as globals.  It would be impossible to assign to a global variable without
953:keyword:`global`, although free variables may refer to globals without being
954declared global.
955
956Names listed in a :keyword:`global` statement must not be used in the same code
957block textually preceding that :keyword:`global` statement.
958
959Names listed in a :keyword:`global` statement must not be defined as formal
960parameters or in a :keyword:`for` loop control target, :keyword:`class`
961definition, function definition, or :keyword:`import` statement.
962
963.. impl-detail::
964
965   The current implementation does not enforce the latter two restrictions, but
966   programs should not abuse this freedom, as future implementations may enforce
967   them or silently change the meaning of the program.
968
969.. index::
970   statement: exec
971   builtin: eval
972   builtin: execfile
973   builtin: compile
974
975**Programmer's note:** the :keyword:`global` is a directive to the parser.  It
976applies only to code parsed at the same time as the :keyword:`global` statement.
977In particular, a :keyword:`global` statement contained in an :keyword:`exec`
978statement does not affect the code block *containing* the :keyword:`exec`
979statement, and code contained in an :keyword:`exec` statement is unaffected by
980:keyword:`global` statements in the code containing the :keyword:`exec`
981statement.  The same applies to the :func:`eval`, :func:`execfile` and
982:func:`compile` functions.
983
984
985.. _exec:
986
987The :keyword:`exec` statement
988=============================
989
990.. index:: statement: exec
991
992.. productionlist::
993   exec_stmt: "exec" `or_expr` ["in" `expression` ["," `expression`]]
994
995This statement supports dynamic execution of Python code.  The first expression
996should evaluate to either a Unicode string, a *Latin-1* encoded string, an open
997file object, a code object, or a tuple.  If it is a string, the string is parsed
998as a suite of Python statements which is then executed (unless a syntax error
999occurs). [#]_ If it is an open file, the file is parsed until EOF and executed.
1000If it is a code object, it is simply executed.  For the interpretation of a
1001tuple, see below.  In all cases, the code that's executed is expected to be
1002valid as file input (see section :ref:`file-input`).  Be aware that the
1003:keyword:`return` and :keyword:`yield` statements may not be used outside of
1004function definitions even within the context of code passed to the
1005:keyword:`exec` statement.
1006
1007In all cases, if the optional parts are omitted, the code is executed in the
1008current scope.  If only the first expression after ``in`` is specified,
1009it should be a dictionary, which will be used for both the global and the local
1010variables.  If two expressions are given, they are used for the global and local
1011variables, respectively. If provided, *locals* can be any mapping object.
1012Remember that at module level, globals and locals are the same dictionary. If
1013two separate objects are given as *globals* and *locals*, the code will be
1014executed as if it were embedded in a class definition.
1015
1016The first expression may also be a tuple of length 2 or 3.  In this case, the
1017optional parts must be omitted.  The form ``exec(expr, globals)`` is equivalent
1018to ``exec expr in globals``, while the form ``exec(expr, globals, locals)`` is
1019equivalent to ``exec expr in globals, locals``.  The tuple form of ``exec``
1020provides compatibility with Python 3, where ``exec`` is a function rather than
1021a statement.
1022
1023.. versionchanged:: 2.4
1024   Formerly, *locals* was required to be a dictionary.
1025
1026.. index::
1027   single: __builtins__
1028   module: __builtin__
1029
1030As a side effect, an implementation may insert additional keys into the
1031dictionaries given besides those corresponding to variable names set by the
1032executed code.  For example, the current implementation may add a reference to
1033the dictionary of the built-in module :mod:`__builtin__` under the key
1034``__builtins__`` (!).
1035
1036.. index::
1037   builtin: eval
1038   builtin: globals
1039   builtin: locals
1040
1041**Programmer's hints:** dynamic evaluation of expressions is supported by the
1042built-in function :func:`eval`.  The built-in functions :func:`globals` and
1043:func:`locals` return the current global and local dictionary, respectively,
1044which may be useful to pass around for use by :keyword:`exec`.
1045
1046
1047.. rubric:: Footnotes
1048
1049.. [#] Note that the parser only accepts the Unix-style end of line convention.
1050       If you are reading the code from a file, make sure to use
1051       :term:`universal newlines` mode to convert Windows or Mac-style newlines.
1052