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:: |
Terry Jan Reedy | f3ae10e | 2014-04-29 01:19:05 -0400 | [diff] [blame] | 75 | single: =; assignment statement |
Georg Brandl | 8ec7f65 | 2007-08-15 14:28:01 +0000 | [diff] [blame] | 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 | |
Georg Brandl | 0ac63f1 | 2009-02-18 00:25:13 +0000 | [diff] [blame] | 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, |
Georg Brandl | 8ec7f65 | 2007-08-15 14:28:01 +0000 | [diff] [blame] | 124 | 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] | 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 | |
Georg Brandl | 8360d5d | 2007-09-07 14:14:40 +0000 | [diff] [blame] | 132 | * 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] | 133 | code block: the name is bound to the object in the current local namespace. |
| 134 | |
Georg Brandl | 8360d5d | 2007-09-07 14:14:40 +0000 | [diff] [blame] | 135 | * 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] | 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 | |
Georg Brandl | 8ec7f65 | 2007-08-15 14:28:01 +0000 | [diff] [blame] | 143 | * 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] | 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. |
Georg Brandl | 8ec7f65 | 2007-08-15 14:28:01 +0000 | [diff] [blame] | 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; |
Georg Brandl | f4e6b98 | 2009-09-16 10:12:06 +0000 | [diff] [blame] | 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 |
Georg Brandl | 8ec7f65 | 2007-08-15 14:28:01 +0000 | [diff] [blame] | 155 | :exc:`AttributeError`). |
| 156 | |
Georg Brandl | f4e6b98 | 2009-09-16 10:12:06 +0000 | [diff] [blame] | 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 | |
Georg Brandl | 8ec7f65 | 2007-08-15 14:28:01 +0000 | [diff] [blame] | 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 | |
Georg Brandl | 6c14e58 | 2009-10-22 11:48:10 +0000 | [diff] [blame] | 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. |
Georg Brandl | 8ec7f65 | 2007-08-15 14:28:01 +0000 | [diff] [blame] | 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 |
Terry Jan Reedy | f3ae10e | 2014-04-29 01:19:05 -0400 | [diff] [blame] | 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 |
Georg Brandl | 8ec7f65 | 2007-08-15 14:28:01 +0000 | [diff] [blame] | 257 | |
| 258 | Augmented assignment is the combination, in a single statement, of a binary |
| 259 | operation and an assignment statement: |
| 260 | |
| 261 | .. productionlist:: |
Georg Brandl | 4a565cc | 2009-01-18 13:47:26 +0000 | [diff] [blame] | 262 | augmented_assignment_stmt: `augtarget` `augop` (`expression_list` | `yield_expression`) |
| 263 | augtarget: `identifier` | `attributeref` | `subscription` | `slicing` |
Georg Brandl | 83463ce | 2008-09-21 07:18:28 +0000 | [diff] [blame] | 264 | augop: "+=" | "-=" | "*=" | "/=" | "//=" | "%=" | "**=" |
Georg Brandl | 8ec7f65 | 2007-08-15 14:28:01 +0000 | [diff] [blame] | 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 | |
Georg Brandl | f4e6b98 | 2009-09-16 10:12:06 +0000 | [diff] [blame] | 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. |
Georg Brandl | 8ec7f65 | 2007-08-15 14:28:01 +0000 | [diff] [blame] | 289 | |
| 290 | |
Georg Brandl | 745e48d | 2007-09-18 07:24:40 +0000 | [diff] [blame] | 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 | |
Benjamin Peterson | d38d344 | 2009-07-22 16:34:37 +0000 | [diff] [blame] | 308 | if __debug__: |
| 309 | if not expression: raise AssertionError |
Georg Brandl | 745e48d | 2007-09-18 07:24:40 +0000 | [diff] [blame] | 310 | |
| 311 | The extended form, ``assert expression1, expression2``, is equivalent to :: |
| 312 | |
Benjamin Peterson | d38d344 | 2009-07-22 16:34:37 +0000 | [diff] [blame] | 313 | if __debug__: |
| 314 | if not expression1: raise AssertionError(expression2) |
Georg Brandl | 745e48d | 2007-09-18 07:24:40 +0000 | [diff] [blame] | 315 | |
| 316 | .. index:: |
| 317 | single: __debug__ |
| 318 | exception: AssertionError |
| 319 | |
Georg Brandl | b19be57 | 2007-12-29 10:57:00 +0000 | [diff] [blame] | 320 | These equivalences assume that :const:`__debug__` and :exc:`AssertionError` refer to |
Georg Brandl | 745e48d | 2007-09-18 07:24:40 +0000 | [diff] [blame] | 321 | the built-in variables with those names. In the current implementation, the |
Georg Brandl | b19be57 | 2007-12-29 10:57:00 +0000 | [diff] [blame] | 322 | built-in variable :const:`__debug__` is ``True`` under normal circumstances, |
Georg Brandl | 745e48d | 2007-09-18 07:24:40 +0000 | [diff] [blame] | 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 | |
Georg Brandl | b19be57 | 2007-12-29 10:57:00 +0000 | [diff] [blame] | 329 | 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] | 330 | is determined when the interpreter starts. |
| 331 | |
| 332 | |
Georg Brandl | 8ec7f65 | 2007-08-15 14:28:01 +0000 | [diff] [blame] | 333 | .. _pass: |
| 334 | |
| 335 | The :keyword:`pass` statement |
| 336 | ============================= |
| 337 | |
Georg Brandl | 6265833 | 2008-01-05 19:29:45 +0000 | [diff] [blame] | 338 | .. index:: |
| 339 | statement: pass |
| 340 | pair: null; operation |
Georg Brandl | 8ec7f65 | 2007-08-15 14:28:01 +0000 | [diff] [blame] | 341 | |
| 342 | .. productionlist:: |
| 343 | pass_stmt: "pass" |
| 344 | |
Georg Brandl | 8ec7f65 | 2007-08-15 14:28:01 +0000 | [diff] [blame] | 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 | |
Georg Brandl | 6265833 | 2008-01-05 19:29:45 +0000 | [diff] [blame] | 359 | .. index:: |
| 360 | statement: del |
| 361 | pair: deletion; target |
| 362 | triple: deletion; target; list |
Georg Brandl | 8ec7f65 | 2007-08-15 14:28:01 +0000 | [diff] [blame] | 363 | |
| 364 | .. productionlist:: |
| 365 | del_stmt: "del" `target_list` |
| 366 | |
Georg Brandl | 8ec7f65 | 2007-08-15 14:28:01 +0000 | [diff] [blame] | 367 | Deletion is recursively defined very similar to the way assignment is defined. |
Sandro Tosi | ec53eb8 | 2011-12-24 19:55:49 +0100 | [diff] [blame] | 368 | Rather than spelling it out in full details, here are some hints. |
Georg Brandl | 8ec7f65 | 2007-08-15 14:28:01 +0000 | [diff] [blame] | 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:: |
Georg Brandl | d82a9c1 | 2008-06-06 10:43:43 +0000 | [diff] [blame] | 402 | print_stmt: "print" ([`expression` ("," `expression`)* [","]] |
| 403 | : | ">>" `expression` [("," `expression`)+ [","]]) |
Georg Brandl | 8ec7f65 | 2007-08-15 14:28:01 +0000 | [diff] [blame] | 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 |
Georg Brandl | 346a38d | 2009-05-22 09:58:48 +0000 | [diff] [blame] | 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.) |
Georg Brandl | 8ec7f65 | 2007-08-15 14:28:01 +0000 | [diff] [blame] | 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 |
Georg Brandl | 8ec7f65 | 2007-08-15 14:28:01 +0000 | [diff] [blame] | 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 | |
Georg Brandl | 6265833 | 2008-01-05 19:29:45 +0000 | [diff] [blame] | 459 | .. index:: |
| 460 | statement: return |
| 461 | pair: function; definition |
| 462 | pair: class; definition |
Georg Brandl | 8ec7f65 | 2007-08-15 14:28:01 +0000 | [diff] [blame] | 463 | |
| 464 | .. productionlist:: |
| 465 | return_stmt: "return" [`expression_list`] |
| 466 | |
Georg Brandl | 8ec7f65 | 2007-08-15 14:28:01 +0000 | [diff] [blame] | 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 | |
Georg Brandl | 8ec7f65 | 2007-08-15 14:28:01 +0000 | [diff] [blame] | 492 | .. index:: |
Georg Brandl | 6265833 | 2008-01-05 19:29:45 +0000 | [diff] [blame] | 493 | statement: yield |
Georg Brandl | 8ec7f65 | 2007-08-15 14:28:01 +0000 | [diff] [blame] | 494 | single: generator; function |
| 495 | single: generator; iterator |
| 496 | single: function; generator |
| 497 | exception: StopIteration |
| 498 | |
Georg Brandl | 6265833 | 2008-01-05 19:29:45 +0000 | [diff] [blame] | 499 | .. productionlist:: |
| 500 | yield_stmt: `yield_expression` |
| 501 | |
Georg Brandl | 8ec7f65 | 2007-08-15 14:28:01 +0000 | [diff] [blame] | 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 |
Serhiy Storchaka | ea21772 | 2014-09-05 23:34:12 +0300 | [diff] [blame] | 509 | executed by calling the generator's :meth:`~generator.next` method repeatedly |
| 510 | until it raises an exception. |
Georg Brandl | 8ec7f65 | 2007-08-15 14:28:01 +0000 | [diff] [blame] | 511 | |
| 512 | When a :keyword:`yield` statement is executed, the state of the generator is |
Serhiy Storchaka | ea21772 | 2014-09-05 23:34:12 +0300 | [diff] [blame] | 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. |
Georg Brandl | 8ec7f65 | 2007-08-15 14:28:01 +0000 | [diff] [blame] | 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 | |
Andrew Kuchling | 67f84a7 | 2013-05-09 20:55:22 -0400 | [diff] [blame] | 527 | For full details of :keyword:`yield` semantics, refer to the :ref:`yieldexpr` |
| 528 | section. |
| 529 | |
Georg Brandl | 8ec7f65 | 2007-08-15 14:28:01 +0000 | [diff] [blame] | 530 | .. note:: |
| 531 | |
Andrew M. Kuchling | 3351e41 | 2008-04-10 21:27:10 +0000 | [diff] [blame] | 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:: |
Georg Brandl | 8ec7f65 | 2007-08-15 14:28:01 +0000 | [diff] [blame] | 535 | |
| 536 | from __future__ import generators |
| 537 | |
| 538 | |
| 539 | .. seealso:: |
| 540 | |
| 541 | :pep:`0255` - Simple Generators |
| 542 | The proposal for adding generators and the :keyword:`yield` statement to Python. |
| 543 | |
| 544 | :pep:`0342` - 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 | |
Georg Brandl | 6265833 | 2008-01-05 19:29:45 +0000 | [diff] [blame] | 554 | .. index:: |
| 555 | statement: raise |
| 556 | single: exception |
| 557 | pair: raising; exception |
Georg Brandl | 8ec7f65 | 2007-08-15 14:28:01 +0000 | [diff] [blame] | 558 | |
| 559 | .. productionlist:: |
| 560 | raise_stmt: "raise" [`expression` ["," `expression` ["," `expression`]]] |
| 561 | |
Georg Brandl | 8ec7f65 | 2007-08-15 14:28:01 +0000 | [diff] [blame] | 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 |
Georg Brandl | a6168f9 | 2008-05-25 07:20:14 +0000 | [diff] [blame] | 565 | (if running under IDLE, a :exc:`Queue.Empty` exception is raised instead). |
Georg Brandl | 8ec7f65 | 2007-08-15 14:28:01 +0000 | [diff] [blame] | 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 | |
Georg Brandl | 8ec7f65 | 2007-08-15 14:28:01 +0000 | [diff] [blame] | 603 | .. index:: |
Georg Brandl | 6265833 | 2008-01-05 19:29:45 +0000 | [diff] [blame] | 604 | statement: break |
Georg Brandl | 8ec7f65 | 2007-08-15 14:28:01 +0000 | [diff] [blame] | 605 | statement: for |
| 606 | statement: while |
| 607 | pair: loop; statement |
| 608 | |
Georg Brandl | 6265833 | 2008-01-05 19:29:45 +0000 | [diff] [blame] | 609 | .. productionlist:: |
| 610 | break_stmt: "break" |
| 611 | |
Georg Brandl | 8ec7f65 | 2007-08-15 14:28:01 +0000 | [diff] [blame] | 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 | |
Georg Brandl | 8ec7f65 | 2007-08-15 14:28:01 +0000 | [diff] [blame] | 638 | .. index:: |
Georg Brandl | 6265833 | 2008-01-05 19:29:45 +0000 | [diff] [blame] | 639 | statement: continue |
Georg Brandl | 8ec7f65 | 2007-08-15 14:28:01 +0000 | [diff] [blame] | 640 | statement: for |
| 641 | statement: while |
| 642 | pair: loop; statement |
| 643 | keyword: finally |
| 644 | |
Georg Brandl | 6265833 | 2008-01-05 19:29:45 +0000 | [diff] [blame] | 645 | .. productionlist:: |
| 646 | continue_stmt: "continue" |
| 647 | |
Georg Brandl | 8ec7f65 | 2007-08-15 14:28:01 +0000 | [diff] [blame] | 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 |
Georg Brandl | 47a5aec | 2008-03-08 09:54:06 +0000 | [diff] [blame] | 650 | :keyword:`finally` clause within that loop. It continues with the next |
Georg Brandl | 8ec7f65 | 2007-08-15 14:28:01 +0000 | [diff] [blame] | 651 | cycle of the nearest enclosing loop. |
| 652 | |
Georg Brandl | 47a5aec | 2008-03-08 09:54:06 +0000 | [diff] [blame] | 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 | |
Georg Brandl | 8ec7f65 | 2007-08-15 14:28:01 +0000 | [diff] [blame] | 657 | |
| 658 | .. _import: |
Georg Brandl | b19be57 | 2007-12-29 10:57:00 +0000 | [diff] [blame] | 659 | .. _from: |
Georg Brandl | 8ec7f65 | 2007-08-15 14:28:01 +0000 | [diff] [blame] | 660 | |
| 661 | The :keyword:`import` statement |
| 662 | =============================== |
| 663 | |
| 664 | .. index:: |
| 665 | statement: import |
| 666 | single: module; importing |
| 667 | pair: name; binding |
| 668 | keyword: from |
Terry Jan Reedy | cd3d741 | 2014-04-29 00:58:48 -0400 | [diff] [blame] | 669 | single: as; import statement |
Georg Brandl | 8ec7f65 | 2007-08-15 14:28:01 +0000 | [diff] [blame] | 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 |
Georg Brandl | 624f337 | 2009-03-31 16:11:45 +0000 | [diff] [blame] | 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. |
Georg Brandl | 8ec7f65 | 2007-08-15 14:28:01 +0000 | [diff] [blame] | 689 | |
| 690 | .. index:: |
Georg Brandl | 624f337 | 2009-03-31 16:11:45 +0000 | [diff] [blame] | 691 | single: package |
Georg Brandl | 8ec7f65 | 2007-08-15 14:28:01 +0000 | [diff] [blame] | 692 | |
Georg Brandl | 624f337 | 2009-03-31 16:11:45 +0000 | [diff] [blame] | 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 |
Benjamin Peterson | 867dc37 | 2014-10-17 11:07:14 -0400 | [diff] [blame] | 698 | are files. |
Georg Brandl | 8ec7f65 | 2007-08-15 14:28:01 +0000 | [diff] [blame] | 699 | |
| 700 | .. index:: |
Georg Brandl | 624f337 | 2009-03-31 16:11:45 +0000 | [diff] [blame] | 701 | single: sys.modules |
Georg Brandl | 8ec7f65 | 2007-08-15 14:28:01 +0000 | [diff] [blame] | 702 | |
Georg Brandl | 624f337 | 2009-03-31 16:11:45 +0000 | [diff] [blame] | 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 |
Sandro Tosi | a76bb03 | 2012-01-14 16:43:14 +0100 | [diff] [blame] | 724 | it returns a :term:`loader` (discussed later) or returns ``None``. |
Georg Brandl | 624f337 | 2009-03-31 16:11:45 +0000 | [diff] [blame] | 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 |
Sandro Tosi | a76bb03 | 2012-01-14 16:43:14 +0100 | [diff] [blame] | 751 | can be found but the path exists then a value of ``None`` is |
Georg Brandl | 624f337 | 2009-03-31 16:11:45 +0000 | [diff] [blame] | 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 |
Ezio Melotti | 93324d7 | 2013-03-28 05:47:31 +0200 | [diff] [blame] | 755 | returns ``None`` is placed in the cache for the path. |
Georg Brandl | 624f337 | 2009-03-31 16:11:45 +0000 | [diff] [blame] | 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. |
Georg Brandl | 8ec7f65 | 2007-08-15 14:28:01 +0000 | [diff] [blame] | 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:: |
Georg Brandl | 624f337 | 2009-03-31 16:11:45 +0000 | [diff] [blame] | 839 | single: relative; import |
Georg Brandl | 8ec7f65 | 2007-08-15 14:28:01 +0000 | [diff] [blame] | 840 | |
Georg Brandl | 624f337 | 2009-03-31 16:11:45 +0000 | [diff] [blame] | 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 |
Florent Xicluna | 9b90cd1 | 2010-09-13 07:46:37 +0000 | [diff] [blame] | 851 | import mod`` from within ``pkg.subpkg1`` you will import ``pkg.subpkg2.mod``. |
Georg Brandl | 624f337 | 2009-03-31 16:11:45 +0000 | [diff] [blame] | 852 | The specification for relative imports is contained within :pep:`328`. |
Georg Brandl | 290d3d9 | 2008-08-01 20:13:29 +0000 | [diff] [blame] | 853 | |
Benjamin Peterson | 51d06ab | 2009-05-14 00:33:10 +0000 | [diff] [blame] | 854 | :func:`importlib.import_module` is provided to support applications that |
| 855 | determine which modules need to be loaded dynamically. |
Georg Brandl | 8ec7f65 | 2007-08-15 14:28:01 +0000 | [diff] [blame] | 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 | |
Benjamin Peterson | f660a53 | 2008-10-09 20:54:43 +0000 | [diff] [blame] | 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. |
Georg Brandl | 8ec7f65 | 2007-08-15 14:28:01 +0000 | [diff] [blame] | 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 | |
Georg Brandl | d7d4fd7 | 2009-07-26 14:37:28 +0000 | [diff] [blame] | 919 | 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] | 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 | |
Georg Brandl | 508c423 | 2009-04-23 08:52:03 +0000 | [diff] [blame] | 932 | .. seealso:: |
| 933 | |
| 934 | :pep:`236` - Back to the __future__ |
| 935 | The original proposal for the __future__ mechanism. |
| 936 | |
Georg Brandl | 8ec7f65 | 2007-08-15 14:28:01 +0000 | [diff] [blame] | 937 | |
| 938 | .. _global: |
| 939 | |
| 940 | The :keyword:`global` statement |
| 941 | =============================== |
| 942 | |
Georg Brandl | 6265833 | 2008-01-05 19:29:45 +0000 | [diff] [blame] | 943 | .. index:: |
| 944 | statement: global |
| 945 | triple: global; name; binding |
Georg Brandl | 8ec7f65 | 2007-08-15 14:28:01 +0000 | [diff] [blame] | 946 | |
| 947 | .. productionlist:: |
| 948 | global_stmt: "global" `identifier` ("," `identifier`)* |
| 949 | |
Georg Brandl | 8ec7f65 | 2007-08-15 14:28:01 +0000 | [diff] [blame] | 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 | |
Georg Brandl | 6c14e58 | 2009-10-22 11:48:10 +0000 | [diff] [blame] | 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. |
Georg Brandl | 8ec7f65 | 2007-08-15 14:28:01 +0000 | [diff] [blame] | 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 |
Benjamin Peterson | b44c861 | 2013-09-01 19:06:35 -0400 | [diff] [blame] | 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. |
Georg Brandl | 8ec7f65 | 2007-08-15 14:28:01 +0000 | [diff] [blame] | 1006 | |
| 1007 | In all cases, if the optional parts are omitted, the code is executed in the |
Mark Dickinson | 1658797 | 2012-11-25 13:25:57 +0000 | [diff] [blame] | 1008 | current scope. If only the first expression after ``in`` is specified, |
Georg Brandl | 8ec7f65 | 2007-08-15 14:28:01 +0000 | [diff] [blame] | 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. |
Terry Jan Reedy | 45ed012 | 2012-07-08 17:35:26 -0400 | [diff] [blame] | 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. |
Georg Brandl | 8ec7f65 | 2007-08-15 14:28:01 +0000 | [diff] [blame] | 1015 | |
Mark Dickinson | 1658797 | 2012-11-25 13:25:57 +0000 | [diff] [blame] | 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 | |
Georg Brandl | 8ec7f65 | 2007-08-15 14:28:01 +0000 | [diff] [blame] | 1023 | .. versionchanged:: 2.4 |
Georg Brandl | 6265833 | 2008-01-05 19:29:45 +0000 | [diff] [blame] | 1024 | Formerly, *locals* was required to be a dictionary. |
Georg Brandl | 8ec7f65 | 2007-08-15 14:28:01 +0000 | [diff] [blame] | 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 | |
Georg Brandl | 8ec7f65 | 2007-08-15 14:28:01 +0000 | [diff] [blame] | 1046 | |
Georg Brandl | 268d85d | 2009-03-31 16:54:38 +0000 | [diff] [blame] | 1047 | .. rubric:: Footnotes |
| 1048 | |
| 1049 | .. [#] Note that the parser only accepts the Unix-style end of line convention. |
R David Murray | 5618aaa | 2012-08-15 11:15:39 -0400 | [diff] [blame] | 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. |