~dkuhlman/python-training-materials/Materials

« back to all changes in this revision

Viewing changes to python-2.7.12-docs-html/_sources/reference/simple_stmts.txt

  • Committer: Dave Kuhlman
  • Date: 2017-04-15 16:24:56 UTC
  • Revision ID: dkuhlman@davekuhlman.org-20170415162456-iav9vozzg4iwqwv3
Updated docs

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
 
 
2
.. _simple:
 
3
 
 
4
*****************
 
5
Simple statements
 
6
*****************
 
7
 
 
8
.. index:: pair: simple; statement
 
9
 
 
10
Simple statements are comprised within a single logical line. Several simple
 
11
statements may occur on a single line separated by semicolons.  The syntax for
 
12
simple 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
 
 
34
Expression statements
 
35
=====================
 
36
 
 
37
.. index::
 
38
   pair: expression; statement
 
39
   pair: expression; list
 
40
 
 
41
Expression statements are used (mostly interactively) to compute and write a
 
42
value, or (usually) to call a procedure (a function that returns no meaningful
 
43
result; in Python, procedures return the value ``None``).  Other uses of
 
44
expression statements are allowed and occasionally useful.  The syntax for an
 
45
expression statement is:
 
46
 
 
47
.. productionlist::
 
48
   expression_stmt: `expression_list`
 
49
 
 
50
An expression statement evaluates the expression list (which may be a single
 
51
expression).
 
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
 
 
62
In interactive mode, if the value is not ``None``, it is converted to a string
 
63
using the built-in :func:`repr` function and the resulting string is written to
 
64
standard output (see section :ref:`print`) on a line by itself.  (Expression
 
65
statements yielding ``None`` are not written, so that procedure calls do not
 
66
cause any output.)
 
67
 
 
68
 
 
69
.. _assignment:
 
70
 
 
71
Assignment 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
 
 
82
Assignment statements are used to (re)bind names to values and to modify
 
83
attributes 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
 
96
symbols.)
 
97
 
 
98
.. index:: pair: expression; list
 
99
 
 
100
An assignment statement evaluates the expression list (remember that this can be
 
101
a single expression or a comma-separated list, the latter yielding a tuple) and
 
102
assigns the single resulting object to each of the target lists, from left to
 
103
right.
 
104
 
 
105
.. index::
 
106
   single: target
 
107
   pair: target; list
 
108
 
 
109
Assignment is defined recursively depending on the form of the target (list).
 
110
When a target is part of a mutable object (an attribute reference, subscription
 
111
or slicing), the mutable object must ultimately perform the assignment and
 
112
decide about its validity, and may raise an exception if the assignment is
 
113
unacceptable.  The rules observed by various types and the exceptions raised are
 
114
given with the definition of the object types (see section :ref:`types`).
 
115
 
 
116
.. index:: triple: target; list; assignment
 
117
 
 
118
Assignment 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
 
 
126
Assignment 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
 
 
226
WARNING: Although the definition of assignment implies that overlaps between the
 
227
left-hand side and the right-hand side are 'safe' (for example ``a, b = b, a``
 
228
swaps two variables), overlaps *within* the collection of assigned-to variables
 
229
are 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
 
 
239
Augmented 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
 
 
258
Augmented assignment is the combination, in a single statement, of a binary
 
259
operation 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
 
268
symbols.)
 
269
 
 
270
An augmented assignment evaluates the target (which, unlike normal assignment
 
271
statements, cannot be an unpacking) and the expression list, performs the binary
 
272
operation specific to the type of assignment on the two operands, and assigns
 
273
the result to the original target.  The target is only evaluated once.
 
274
 
 
275
An augmented assignment expression like ``x += 1`` can be rewritten as ``x = x +
 
276
1`` to achieve a similar, but not exactly equal effect. In the augmented
 
277
version, ``x`` is only evaluated once. Also, when possible, the actual operation
 
278
is performed *in-place*, meaning that rather than creating a new object and
 
279
assigning that to the target, the old object is modified instead.
 
280
 
 
281
With the exception of assigning to tuples and multiple targets in a single
 
282
statement, the assignment done by augmented assignment statements is handled the
 
283
same way as normal assignments. Similarly, with the exception of the possible
 
284
*in-place* behavior, the binary operation performed by augmented assignment is
 
285
the same as the normal binary operations.
 
286
 
 
287
For targets which are attribute references, the same :ref:`caveat about class
 
288
and instance attributes <attr-target-note>` applies as for regular assignments.
 
289
 
 
290
 
 
291
.. _assert:
 
292
 
 
293
The :keyword:`assert` statement
 
294
===============================
 
295
 
 
296
.. index::
 
297
   statement: assert
 
298
   pair: debugging; assertions
 
299
 
 
300
Assert statements are a convenient way to insert debugging assertions into a
 
301
program:
 
302
 
 
303
.. productionlist::
 
304
   assert_stmt: "assert" `expression` ["," `expression`]
 
305
 
 
306
The simple form, ``assert expression``, is equivalent to ::
 
307
 
 
308
   if __debug__:
 
309
       if not expression: raise AssertionError
 
310
 
 
311
The 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
 
 
320
These equivalences assume that :const:`__debug__` and :exc:`AssertionError` refer to
 
321
the built-in variables with those names.  In the current implementation, the
 
322
built-in variable :const:`__debug__` is ``True`` under normal circumstances,
 
323
``False`` when optimization is requested (command line option -O).  The current
 
324
code generator emits no code for an assert statement when optimization is
 
325
requested at compile time.  Note that it is unnecessary to include the source
 
326
code for the expression that failed in the error message; it will be displayed
 
327
as part of the stack trace.
 
328
 
 
329
Assignments to :const:`__debug__` are illegal.  The value for the built-in variable
 
330
is determined when the interpreter starts.
 
331
 
 
332
 
 
333
.. _pass:
 
334
 
 
335
The :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.
 
346
It is useful as a placeholder when a statement is required syntactically, but no
 
347
code 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
 
 
356
The :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
 
 
367
Deletion is recursively defined very similar to the way assignment is defined.
 
368
Rather than spelling it out in full details, here are some hints.
 
369
 
 
370
Deletion of a target list recursively deletes each target, from left to right.
 
371
 
 
372
.. index::
 
373
   statement: global
 
374
   pair: unbinding; name
 
375
 
 
376
Deletion of a name removes the binding of that name  from the local or global
 
377
namespace, depending on whether the name occurs in a :keyword:`global` statement
 
378
in the same code block.  If the name is unbound, a :exc:`NameError` exception
 
379
will be raised.
 
380
 
 
381
.. index:: pair: free; variable
 
382
 
 
383
It is illegal to delete a name from the local namespace if it occurs as a free
 
384
variable in a nested block.
 
385
 
 
386
.. index:: pair: attribute; deletion
 
387
 
 
388
Deletion of attribute references, subscriptions and slicings is passed to the
 
389
primary object involved; deletion of a slicing is in general equivalent to
 
390
assignment of an empty slice of the right type (but even this is determined by
 
391
the sliced object).
 
392
 
 
393
 
 
394
.. _print:
 
395
 
 
396
The :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
 
406
object to standard output (see below).  If an object is not a string, it is
 
407
first 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
 
409
object is (converted and) written, unless the output system believes it is
 
410
positioned at the beginning of a line.  This is the case (1) when no characters
 
411
have yet been written to standard output, (2) when the last character written to
 
412
standard output is a whitespace character except ``' '``, or (3) when the last
 
413
write 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
 
415
for 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
 
 
429
A ``'\n'`` character is written at the end, unless the :keyword:`print`
 
430
statement ends with a comma.  This is the only action if the statement contains
 
431
just the keyword :keyword:`print`.
 
432
 
 
433
.. index::
 
434
   pair: standard; output
 
435
   module: sys
 
436
   single: stdout (in module sys)
 
437
   exception: RuntimeError
 
438
 
 
439
Standard output is defined as the file object named ``stdout`` in the built-in
 
440
module :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
 
446
syntax described above. This form is sometimes referred to as ":keyword:`print`
 
447
chevron." 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
 
449
described above.  With this extended form, the subsequent expressions are
 
450
printed to this file object.  If the first expression evaluates to ``None``,
 
451
then ``sys.stdout`` is used as the file for output.
 
452
 
 
453
 
 
454
.. _return:
 
455
 
 
456
The :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,
 
468
not within a nested class definition.
 
469
 
 
470
If 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
 
 
477
When :keyword:`return` passes control out of a :keyword:`try` statement with a
 
478
:keyword:`finally` clause, that :keyword:`finally` clause is executed before
 
479
really leaving the function.
 
480
 
 
481
In a generator function, the :keyword:`return` statement is not allowed to
 
482
include an :token:`expression_list`.  In that context, a bare :keyword:`return`
 
483
indicates that the generator is done and will cause :exc:`StopIteration` to be
 
484
raised.
 
485
 
 
486
 
 
487
.. _yield:
 
488
 
 
489
The :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
 
 
502
The :keyword:`yield` statement is only used when defining a generator function,
 
503
and is only used in the body of the generator function. Using a :keyword:`yield`
 
504
statement in a function definition is sufficient to cause that definition to
 
505
create a generator function instead of a normal function.
 
506
 
 
507
When a generator function is called, it returns an iterator known as a generator
 
508
iterator, or more commonly, a generator.  The body of the generator function is
 
509
executed by calling the generator's :meth:`~generator.next` method repeatedly
 
510
until it raises an exception.
 
511
 
 
512
When a :keyword:`yield` statement is executed, the state of the generator is
 
513
frozen 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
 
515
retained, including the current bindings of local variables, the instruction
 
516
pointer, and the internal evaluation stack: enough information is saved so that
 
517
the next time :meth:`~generator.next` is invoked, the function can proceed
 
518
exactly as if the :keyword:`yield` statement were just another external call.
 
519
 
 
520
As 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
 
522
the generator is not resumed before it is finalized (by reaching a zero
 
523
reference count or by being garbage collected), the generator-iterator's
 
524
:meth:`close` method will be called, allowing any pending :keyword:`finally`
 
525
clauses to execute.
 
526
 
 
527
For full details of :keyword:`yield` semantics, refer to the :ref:`yieldexpr`
 
528
section.
 
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
 
 
551
The :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
 
 
562
If no expressions are present, :keyword:`raise` re-raises the last exception
 
563
that was active in the current scope.  If no exception is active in the current
 
564
scope, 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
 
 
567
Otherwise, :keyword:`raise` evaluates the expressions to get three objects,
 
568
using ``None`` as the value of omitted expressions.  The first two objects are
 
569
used to determine the *type* and *value* of the exception.
 
570
 
 
571
If the first object is an instance, the type of the exception is the class of
 
572
the instance, the instance itself is the value, and the second object must be
 
573
``None``.
 
574
 
 
575
If the first object is a class, it becomes the type of the exception. The second
 
576
object is used to determine the exception value: If it is an instance of the
 
577
class, the instance becomes the exception value. If the second object is a
 
578
tuple, 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
 
580
single argument to the constructor.  The instance so created by calling the
 
581
constructor is used as the exception value.
 
582
 
 
583
.. index:: object: traceback
 
584
 
 
585
If 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
 
587
location as the place where the exception occurred.  If the third object is
 
588
present and not a traceback object or ``None``, a :exc:`TypeError` exception is
 
589
raised.  The three-expression form of :keyword:`raise` is useful to re-raise an
 
590
exception transparently in an except clause, but :keyword:`raise` with no
 
591
expressions should be preferred if the exception to be re-raised was the most
 
592
recently active exception in the current scope.
 
593
 
 
594
Additional information on exceptions can be found in section :ref:`exceptions`,
 
595
and information about handling exceptions is in section :ref:`try`.
 
596
 
 
597
 
 
598
.. _break:
 
599
 
 
600
The :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
 
614
that loop.
 
615
 
 
616
.. index:: keyword: else
 
617
 
 
618
It terminates the nearest enclosing loop, skipping the optional :keyword:`else`
 
619
clause if the loop has one.
 
620
 
 
621
.. index:: pair: loop control; target
 
622
 
 
623
If a :keyword:`for` loop is terminated by :keyword:`break`, the loop control
 
624
target keeps its current value.
 
625
 
 
626
.. index:: keyword: finally
 
627
 
 
628
When :keyword:`break` passes control out of a :keyword:`try` statement with a
 
629
:keyword:`finally` clause, that :keyword:`finally` clause is executed before
 
630
really leaving the loop.
 
631
 
 
632
 
 
633
.. _continue:
 
634
 
 
635
The :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
 
651
cycle of the nearest enclosing loop.
 
652
 
 
653
When :keyword:`continue` passes control out of a :keyword:`try` statement with a
 
654
:keyword:`finally` clause, that :keyword:`finally` clause is executed before
 
655
really starting the next loop cycle.
 
656
 
 
657
 
 
658
.. _import:
 
659
.. _from:
 
660
 
 
661
The :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
 
 
682
Import statements are executed in two steps: (1) find a module, and initialize
 
683
it if necessary; (2) define a name or names in the local namespace (of the scope
 
684
where the :keyword:`import` statement occurs). The statement comes in two
 
685
forms 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.
 
687
The form with :keyword:`from` performs step (1) once, and then performs step
 
688
(2) repeatedly.
 
689
 
 
690
.. index::
 
691
    single: package
 
692
 
 
693
To understand how step (1) occurs, one must first understand how Python handles
 
694
hierarchical naming of modules. To help organize modules and provide a
 
695
hierarchy in naming, Python has a concept of packages. A package can contain
 
696
other packages and modules while modules cannot contain other modules or
 
697
packages. From a file system perspective, packages are directories and modules
 
698
are files.
 
699
 
 
700
.. index::
 
701
    single: sys.modules
 
702
 
 
703
Once the name of the module is known (unless otherwise specified, the term
 
704
"module" will refer to both packages and modules), searching
 
705
for the module or package can begin. The first place checked is
 
706
:data:`sys.modules`, the cache of all modules that have been imported
 
707
previously. 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
 
 
715
If 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`).
 
717
The object is a list of :term:`finder` objects which are queried in order as to
 
718
whether they know how to load the module by calling their :meth:`find_module`
 
719
method with the name of the module. If the module happens to be contained
 
720
within a package (as denoted by the existence of a dot in the name), then a
 
721
second 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
 
723
dot in the name of the module being imported). If a finder can find the module
 
724
it 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
 
 
731
If none of the finders on :data:`sys.meta_path` are able to find the module
 
732
then some implicitly defined finders are queried. Implementations of Python
 
733
vary in what implicit meta path finders are defined. The one they all do
 
734
define, though, is one that handles :data:`sys.path_hooks`,
 
735
:data:`sys.path_importer_cache`, and :data:`sys.path`.
 
736
 
 
737
The implicit finder searches for the requested module in the "paths" specified
 
738
in one of two places ("paths" do not have to be file system paths). If the
 
739
module being imported is supposed to be contained within a package then the
 
740
second argument passed to :meth:`find_module`, :attr:`__path__` on the parent
 
741
package, is used as the source of paths. If the module is not contained in a
 
742
package then :data:`sys.path` is used as the source of paths.
 
743
 
 
744
Once the source of paths is chosen it is iterated over to find a finder that
 
745
can handle that path. The dict at :data:`sys.path_importer_cache` caches
 
746
finders for paths and is checked for a finder. If the path does not have a
 
747
finder cached then :data:`sys.path_hooks` is searched by calling each object in
 
748
the 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
 
751
can be found but the path exists then a value of ``None`` is
 
752
stored in :data:`sys.path_importer_cache` to signify that an implicit,
 
753
file-based finder that handles modules stored as individual files should be
 
754
used for that path. If the path does not exist then a finder which always
 
755
returns ``None`` is placed in the cache for the path.
 
756
 
 
757
.. index::
 
758
    single: loader
 
759
    pair: loader; load_module
 
760
    exception: ImportError
 
761
 
 
762
If no finder can find the module then :exc:`ImportError` is raised. Otherwise
 
763
some finder returned a loader whose :meth:`load_module` method is called with
 
764
the name of the module to load (see :pep:`302` for the original definition of
 
765
loaders). A loader has several responsibilities to perform on a module it
 
766
loads. First, if the module already exists in :data:`sys.modules` (a
 
767
possibility if the loader is called outside of the import machinery) then it
 
768
is to use that module for initialization and not a new module. But if the
 
769
module does not exist in :data:`sys.modules` then it is to be added to that
 
770
dict before initialization begins. If an error occurs during loading of the
 
771
module and it was added to :data:`sys.modules` it is to be removed from the
 
772
dict. If an error occurs but the module was already in :data:`sys.modules` it
 
773
is left in the dict.
 
774
 
 
775
.. index::
 
776
    single: __name__
 
777
    single: __file__
 
778
    single: __path__
 
779
    single: __package__
 
780
    single: __loader__
 
781
 
 
782
The loader must set several attributes on the module. :data:`__name__` is to be
 
783
set to the name of the module. :data:`__file__` is to be the "path" to the file
 
784
unless the module is built-in (and thus listed in
 
785
:data:`sys.builtin_module_names`) in which case the attribute is not set.
 
786
If what is being imported is a package then :data:`__path__` is to be set to a
 
787
list of paths to be searched when looking for modules and packages contained
 
788
within the package being imported. :data:`__package__` is optional but should
 
789
be set to the name of package that contains the module or package (the empty
 
790
string is used for module not contained in a package). :data:`__loader__` is
 
791
also optional but should be set to the loader object that is loading the
 
792
module.
 
793
 
 
794
.. index::
 
795
    exception: ImportError
 
796
 
 
797
If an error occurs during loading then the loader raises :exc:`ImportError` if
 
798
some other exception is not already being propagated. Otherwise the loader
 
799
returns the module that was loaded and initialized.
 
800
 
 
801
When step (1) finishes without raising an exception, step (2) can begin.
 
802
 
 
803
The first form of :keyword:`import` statement binds the module name in the local
 
804
namespace to the module object, and then goes on to import the next identifier,
 
805
if 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
 
 
812
The :keyword:`from` form does not bind the module name: it goes through the list
 
813
of identifiers, looks each one of them up in the module found in step (1), and
 
814
binds the name in the local namespace to the object thus found.  As with the
 
815
first form of :keyword:`import`, an alternate local name can be supplied by
 
816
specifying ":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
 
819
namespace of the :keyword:`import` statement..
 
820
 
 
821
.. index:: single: __all__ (optional module attribute)
 
822
 
 
823
The *public names* defined by a module are determined by checking the module's
 
824
namespace for a variable named ``__all__``; if defined, it must be a sequence of
 
825
strings 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__``
 
827
is not defined, the set of public names includes all names found in the module's
 
828
namespace which do not begin with an underscore character (``'_'``).
 
829
``__all__`` should contain the entire public API. It is intended to avoid
 
830
accidentally exporting items that are not part of the API (such as library
 
831
modules which were imported and used within the module).
 
832
 
 
833
The :keyword:`from` form with ``*`` may only occur in a module scope.  If the
 
834
wild card form of import --- ``import *`` --- is used in a function and the
 
835
function contains or is a nested block with free variables, the compiler will
 
836
raise a :exc:`SyntaxError`.
 
837
 
 
838
.. index::
 
839
    single: relative; import
 
840
 
 
841
When specifying what module to import you do not have to specify the absolute
 
842
name of the module. When a module or package is contained within another
 
843
package it is possible to make a relative import within the same top package
 
844
without having to mention the package name. By using leading dots in the
 
845
specified module or package after :keyword:`from` you can specify how high to
 
846
traverse up the current package hierarchy without specifying exact names. One
 
847
leading dot means the current package where the module making the import
 
848
exists. Two dots means up one package level. Three dots is up two levels, etc.
 
849
So if you execute ``from . import mod`` from a module in the ``pkg`` package
 
850
then you will end up importing ``pkg.mod``. If you execute ``from ..subpkg2
 
851
import mod`` from within ``pkg.subpkg1`` you will import ``pkg.subpkg2.mod``.
 
852
The specification for relative imports is contained within :pep:`328`.
 
853
 
 
854
:func:`importlib.import_module` is provided to support applications that
 
855
determine which modules need to be loaded dynamically.
 
856
 
 
857
 
 
858
.. _future:
 
859
 
 
860
Future statements
 
861
-----------------
 
862
 
 
863
.. index:: pair: future; statement
 
864
 
 
865
A :dfn:`future statement` is a directive to the compiler that a particular
 
866
module should be compiled using syntax or semantics that will be available in a
 
867
specified future release of Python.  The future statement is intended to ease
 
868
migration to future versions of Python that introduce incompatible changes to
 
869
the language.  It allows use of the new features on a per-module basis before
 
870
the 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
 
 
880
A future statement must appear near the top of the module.  The only lines that
 
881
can appear before a future statement are:
 
882
 
 
883
* the module docstring (if any),
 
884
* comments,
 
885
* blank lines, and
 
886
* other future statements.
 
887
 
 
888
The 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
 
892
always enabled.
 
893
 
 
894
A future statement is recognized and treated specially at compile time: Changes
 
895
to the semantics of core constructs are often implemented by generating
 
896
different code.  It may even be the case that a new feature introduces new
 
897
incompatible syntax (such as a new reserved word), in which case the compiler
 
898
may need to parse the module differently.  Such decisions cannot be pushed off
 
899
until runtime.
 
900
 
 
901
For any given release, the compiler knows which feature names have been defined,
 
902
and raises a compile-time error if a future statement contains a feature not
 
903
known to it.
 
904
 
 
905
The direct runtime semantics are the same as for any import statement: there is
 
906
a standard module :mod:`__future__`, described later, and it will be imported in
 
907
the usual way at the time the future statement is executed.
 
908
 
 
909
The interesting runtime semantics depend on the specific feature enabled by the
 
910
future statement.
 
911
 
 
912
Note that there is nothing special about the statement::
 
913
 
 
914
   import __future__ [as name]
 
915
 
 
916
That is not a future statement; it's an ordinary import statement with no
 
917
special semantics or syntax restrictions.
 
918
 
 
919
Code 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
 
921
a future statement will, by default, use the new  syntax or semantics associated
 
922
with the future statement.  This can, starting with Python 2.2 be controlled by
 
923
optional arguments to :func:`compile` --- see the documentation of that function
 
924
for details.
 
925
 
 
926
A future statement typed at an interactive interpreter prompt will take effect
 
927
for 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
 
929
a future statement, it will be in effect in the interactive session started
 
930
after 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
 
 
940
The :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
 
 
950
The :keyword:`global` statement is a declaration which holds for the entire
 
951
current code block.  It means that the listed identifiers are to be interpreted
 
952
as globals.  It would be impossible to assign to a global variable without
 
953
:keyword:`global`, although free variables may refer to globals without being
 
954
declared global.
 
955
 
 
956
Names listed in a :keyword:`global` statement must not be used in the same code
 
957
block textually preceding that :keyword:`global` statement.
 
958
 
 
959
Names listed in a :keyword:`global` statement must not be defined as formal
 
960
parameters or in a :keyword:`for` loop control target, :keyword:`class`
 
961
definition, 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
 
976
applies only to code parsed at the same time as the :keyword:`global` statement.
 
977
In particular, a :keyword:`global` statement contained in an :keyword:`exec`
 
978
statement does not affect the code block *containing* the :keyword:`exec`
 
979
statement, and code contained in an :keyword:`exec` statement is unaffected by
 
980
:keyword:`global` statements in the code containing the :keyword:`exec`
 
981
statement.  The same applies to the :func:`eval`, :func:`execfile` and
 
982
:func:`compile` functions.
 
983
 
 
984
 
 
985
.. _exec:
 
986
 
 
987
The :keyword:`exec` statement
 
988
=============================
 
989
 
 
990
.. index:: statement: exec
 
991
 
 
992
.. productionlist::
 
993
   exec_stmt: "exec" `or_expr` ["in" `expression` ["," `expression`]]
 
994
 
 
995
This statement supports dynamic execution of Python code.  The first expression
 
996
should evaluate to either a Unicode string, a *Latin-1* encoded string, an open
 
997
file object, a code object, or a tuple.  If it is a string, the string is parsed
 
998
as a suite of Python statements which is then executed (unless a syntax error
 
999
occurs). [#]_ If it is an open file, the file is parsed until EOF and executed.
 
1000
If it is a code object, it is simply executed.  For the interpretation of a
 
1001
tuple, see below.  In all cases, the code that's executed is expected to be
 
1002
valid 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
 
1004
function definitions even within the context of code passed to the
 
1005
:keyword:`exec` statement.
 
1006
 
 
1007
In all cases, if the optional parts are omitted, the code is executed in the
 
1008
current scope.  If only the first expression after ``in`` is specified,
 
1009
it should be a dictionary, which will be used for both the global and the local
 
1010
variables.  If two expressions are given, they are used for the global and local
 
1011
variables, respectively. If provided, *locals* can be any mapping object.
 
1012
Remember that at module level, globals and locals are the same dictionary. If
 
1013
two separate objects are given as *globals* and *locals*, the code will be
 
1014
executed as if it were embedded in a class definition.
 
1015
 
 
1016
The first expression may also be a tuple of length 2 or 3.  In this case, the
 
1017
optional parts must be omitted.  The form ``exec(expr, globals)`` is equivalent
 
1018
to ``exec expr in globals``, while the form ``exec(expr, globals, locals)`` is
 
1019
equivalent to ``exec expr in globals, locals``.  The tuple form of ``exec``
 
1020
provides compatibility with Python 3, where ``exec`` is a function rather than
 
1021
a 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
 
 
1030
As a side effect, an implementation may insert additional keys into the
 
1031
dictionaries given besides those corresponding to variable names set by the
 
1032
executed code.  For example, the current implementation may add a reference to
 
1033
the 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
 
1042
built-in function :func:`eval`.  The built-in functions :func:`globals` and
 
1043
:func:`locals` return the current global and local dictionary, respectively,
 
1044
which 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.