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