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