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, which will then be 595attached to the raised exception as the :attr:`__cause__` attribute (which is 596writable). If the raised exception is not handled, both exceptions will be 597printed:: 598 599 >>> try: 600 ... print(1 / 0) 601 ... except Exception as exc: 602 ... raise RuntimeError("Something bad happened") from exc 603 ... 604 Traceback (most recent call last): 605 File "<stdin>", line 2, in <module> 606 ZeroDivisionError: division by zero 607 608 The above exception was the direct cause of the following exception: 609 610 Traceback (most recent call last): 611 File "<stdin>", line 4, in <module> 612 RuntimeError: Something bad happened 613 614A similar mechanism works implicitly if an exception is raised inside an 615exception handler or a :keyword:`finally` clause: the previous exception is then 616attached as the new exception's :attr:`__context__` attribute:: 617 618 >>> try: 619 ... print(1 / 0) 620 ... except: 621 ... raise RuntimeError("Something bad happened") 622 ... 623 Traceback (most recent call last): 624 File "<stdin>", line 2, in <module> 625 ZeroDivisionError: division by zero 626 627 During handling of the above exception, another exception occurred: 628 629 Traceback (most recent call last): 630 File "<stdin>", line 4, in <module> 631 RuntimeError: Something bad happened 632 633Exception chaining can be explicitly suppressed by specifying :const:`None` in 634the ``from`` clause:: 635 636 >>> try: 637 ... print(1 / 0) 638 ... except: 639 ... raise RuntimeError("Something bad happened") from None 640 ... 641 Traceback (most recent call last): 642 File "<stdin>", line 4, in <module> 643 RuntimeError: Something bad happened 644 645Additional information on exceptions can be found in section :ref:`exceptions`, 646and information about handling exceptions is in section :ref:`try`. 647 648.. versionchanged:: 3.3 649 :const:`None` is now permitted as ``Y`` in ``raise X from Y``. 650 651.. versionadded:: 3.3 652 The ``__suppress_context__`` attribute to suppress automatic display of the 653 exception context. 654 655.. _break: 656 657The :keyword:`!break` statement 658=============================== 659 660.. index:: 661 ! statement: break 662 statement: for 663 statement: while 664 pair: loop; statement 665 666.. productionlist:: python-grammar 667 break_stmt: "break" 668 669:keyword:`break` may only occur syntactically nested in a :keyword:`for` or 670:keyword:`while` loop, but not nested in a function or class definition within 671that loop. 672 673.. index:: keyword: else 674 pair: loop control; target 675 676It terminates the nearest enclosing loop, skipping the optional :keyword:`!else` 677clause if the loop has one. 678 679If a :keyword:`for` loop is terminated by :keyword:`break`, the loop control 680target keeps its current value. 681 682.. index:: keyword: finally 683 684When :keyword:`break` passes control out of a :keyword:`try` statement with a 685:keyword:`finally` clause, that :keyword:`!finally` clause is executed before 686really leaving the loop. 687 688 689.. _continue: 690 691The :keyword:`!continue` statement 692================================== 693 694.. index:: 695 ! statement: continue 696 statement: for 697 statement: while 698 pair: loop; statement 699 keyword: finally 700 701.. productionlist:: python-grammar 702 continue_stmt: "continue" 703 704:keyword:`continue` may only occur syntactically nested in a :keyword:`for` or 705:keyword:`while` loop, but not nested in a function or class definition within 706that loop. It continues with the next cycle of the nearest enclosing loop. 707 708When :keyword:`continue` passes control out of a :keyword:`try` statement with a 709:keyword:`finally` clause, that :keyword:`!finally` clause is executed before 710really starting the next loop cycle. 711 712 713.. _import: 714.. _from: 715 716The :keyword:`!import` statement 717================================ 718 719.. index:: 720 ! statement: import 721 single: module; importing 722 pair: name; binding 723 keyword: from 724 keyword: as 725 exception: ImportError 726 single: , (comma); import statement 727 728.. productionlist:: python-grammar 729 import_stmt: "import" `module` ["as" `identifier`] ("," `module` ["as" `identifier`])* 730 : | "from" `relative_module` "import" `identifier` ["as" `identifier`] 731 : ("," `identifier` ["as" `identifier`])* 732 : | "from" `relative_module` "import" "(" `identifier` ["as" `identifier`] 733 : ("," `identifier` ["as" `identifier`])* [","] ")" 734 : | "from" `module` "import" "*" 735 module: (`identifier` ".")* `identifier` 736 relative_module: "."* `module` | "."+ 737 738The basic import statement (no :keyword:`from` clause) is executed in two 739steps: 740 741#. find a module, loading and initializing it if necessary 742#. define a name or names in the local namespace for the scope where 743 the :keyword:`import` statement occurs. 744 745When the statement contains multiple clauses (separated by 746commas) the two steps are carried out separately for each clause, just 747as though the clauses had been separated out into individual import 748statements. 749 750The details of the first step, finding and loading modules are described in 751greater detail in the section on the :ref:`import system <importsystem>`, 752which also describes the various types of packages and modules that can 753be imported, as well as all the hooks that can be used to customize 754the import system. Note that failures in this step may indicate either 755that the module could not be located, *or* that an error occurred while 756initializing the module, which includes execution of the module's code. 757 758If the requested module is retrieved successfully, it will be made 759available in the local namespace in one of three ways: 760 761.. index:: single: as; import statement 762 763* If the module name is followed by :keyword:`!as`, then the name 764 following :keyword:`!as` is bound directly to the imported module. 765* If no other name is specified, and the module being imported is a top 766 level module, the module's name is bound in the local namespace as a 767 reference to the imported module 768* If the module being imported is *not* a top level module, then the name 769 of the top level package that contains the module is bound in the local 770 namespace as a reference to the top level package. The imported module 771 must be accessed using its full qualified name rather than directly 772 773 774.. index:: 775 pair: name; binding 776 single: from; import statement 777 778The :keyword:`from` form uses a slightly more complex process: 779 780#. find the module specified in the :keyword:`from` clause, loading and 781 initializing it if necessary; 782#. for each of the identifiers specified in the :keyword:`import` clauses: 783 784 #. check if the imported module has an attribute by that name 785 #. if not, attempt to import a submodule with that name and then 786 check the imported module again for that attribute 787 #. if the attribute is not found, :exc:`ImportError` is raised. 788 #. otherwise, a reference to that value is stored in the local namespace, 789 using the name in the :keyword:`!as` clause if it is present, 790 otherwise using the attribute name 791 792Examples:: 793 794 import foo # foo imported and bound locally 795 import foo.bar.baz # foo.bar.baz imported, foo bound locally 796 import foo.bar.baz as fbb # foo.bar.baz imported and bound as fbb 797 from foo.bar import baz # foo.bar.baz imported and bound as baz 798 from foo import attr # foo imported and foo.attr bound as attr 799 800.. index:: single: * (asterisk); import statement 801 802If the list of identifiers is replaced by a star (``'*'``), all public 803names defined in the module are bound in the local namespace for the scope 804where the :keyword:`import` statement occurs. 805 806.. index:: single: __all__ (optional module attribute) 807 808The *public names* defined by a module are determined by checking the module's 809namespace for a variable named ``__all__``; if defined, it must be a sequence 810of strings which are names defined or imported by that module. The names 811given in ``__all__`` are all considered public and are required to exist. If 812``__all__`` is not defined, the set of public names includes all names found 813in the module's namespace which do not begin with an underscore character 814(``'_'``). ``__all__`` should contain the entire public API. It is intended 815to avoid accidentally exporting items that are not part of the API (such as 816library modules which were imported and used within the module). 817 818The wild card form of import --- ``from module import *`` --- is only allowed at 819the module level. Attempting to use it in class or function definitions will 820raise a :exc:`SyntaxError`. 821 822.. index:: 823 single: relative; import 824 825When specifying what module to import you do not have to specify the absolute 826name of the module. When a module or package is contained within another 827package it is possible to make a relative import within the same top package 828without having to mention the package name. By using leading dots in the 829specified module or package after :keyword:`from` you can specify how high to 830traverse up the current package hierarchy without specifying exact names. One 831leading dot means the current package where the module making the import 832exists. Two dots means up one package level. Three dots is up two levels, etc. 833So if you execute ``from . import mod`` from a module in the ``pkg`` package 834then you will end up importing ``pkg.mod``. If you execute ``from ..subpkg2 835import mod`` from within ``pkg.subpkg1`` you will import ``pkg.subpkg2.mod``. 836The specification for relative imports is contained in 837the :ref:`relativeimports` section. 838 839:func:`importlib.import_module` is provided to support applications that 840determine dynamically the modules to be loaded. 841 842.. audit-event:: import module,filename,sys.path,sys.meta_path,sys.path_hooks import 843 844.. _future: 845 846Future statements 847----------------- 848 849.. index:: 850 pair: future; statement 851 single: __future__; future statement 852 853A :dfn:`future statement` is a directive to the compiler that a particular 854module should be compiled using syntax or semantics that will be available in a 855specified future release of Python where the feature becomes standard. 856 857The future statement is intended to ease migration to future versions of Python 858that introduce incompatible changes to the language. It allows use of the new 859features on a per-module basis before the release in which the feature becomes 860standard. 861 862.. productionlist:: python-grammar 863 future_stmt: "from" "__future__" "import" `feature` ["as" `identifier`] 864 : ("," `feature` ["as" `identifier`])* 865 : | "from" "__future__" "import" "(" `feature` ["as" `identifier`] 866 : ("," `feature` ["as" `identifier`])* [","] ")" 867 feature: `identifier` 868 869A future statement must appear near the top of the module. The only lines that 870can appear before a future statement are: 871 872* the module docstring (if any), 873* comments, 874* blank lines, and 875* other future statements. 876 877The only feature that requires using the future statement is 878``annotations`` (see :pep:`563`). 879 880All historical features enabled by the future statement are still recognized 881by Python 3. The list includes ``absolute_import``, ``division``, 882``generators``, ``generator_stop``, ``unicode_literals``, 883``print_function``, ``nested_scopes`` and ``with_statement``. They are 884all redundant because they are always enabled, and only kept for 885backwards compatibility. 886 887A future statement is recognized and treated specially at compile time: Changes 888to the semantics of core constructs are often implemented by generating 889different code. It may even be the case that a new feature introduces new 890incompatible syntax (such as a new reserved word), in which case the compiler 891may need to parse the module differently. Such decisions cannot be pushed off 892until runtime. 893 894For any given release, the compiler knows which feature names have been defined, 895and raises a compile-time error if a future statement contains a feature not 896known to it. 897 898The direct runtime semantics are the same as for any import statement: there is 899a standard module :mod:`__future__`, described later, and it will be imported in 900the usual way at the time the future statement is executed. 901 902The interesting runtime semantics depend on the specific feature enabled by the 903future statement. 904 905Note that there is nothing special about the statement:: 906 907 import __future__ [as name] 908 909That is not a future statement; it's an ordinary import statement with no 910special semantics or syntax restrictions. 911 912Code compiled by calls to the built-in functions :func:`exec` and :func:`compile` 913that occur in a module :mod:`M` containing a future statement will, by default, 914use the new syntax or semantics associated with the future statement. This can 915be controlled by optional arguments to :func:`compile` --- see the documentation 916of that function for details. 917 918A future statement typed at an interactive interpreter prompt will take effect 919for the rest of the interpreter session. If an interpreter is started with the 920:option:`-i` option, is passed a script name to execute, and the script includes 921a future statement, it will be in effect in the interactive session started 922after the script is executed. 923 924.. seealso:: 925 926 :pep:`236` - Back to the __future__ 927 The original proposal for the __future__ mechanism. 928 929 930.. _global: 931 932The :keyword:`!global` statement 933================================ 934 935.. index:: 936 ! statement: global 937 triple: global; name; binding 938 single: , (comma); identifier list 939 940.. productionlist:: python-grammar 941 global_stmt: "global" `identifier` ("," `identifier`)* 942 943The :keyword:`global` statement is a declaration which holds for the entire 944current code block. It means that the listed identifiers are to be interpreted 945as globals. It would be impossible to assign to a global variable without 946:keyword:`!global`, although free variables may refer to globals without being 947declared global. 948 949Names listed in a :keyword:`global` statement must not be used in the same code 950block textually preceding that :keyword:`!global` statement. 951 952Names listed in a :keyword:`global` statement must not be defined as formal 953parameters or in a :keyword:`for` loop control target, :keyword:`class` 954definition, function definition, :keyword:`import` statement, or variable 955annotation. 956 957.. impl-detail:: 958 959 The current implementation does not enforce some of these restrictions, but 960 programs should not abuse this freedom, as future implementations may enforce 961 them or silently change the meaning of the program. 962 963.. index:: 964 builtin: exec 965 builtin: eval 966 builtin: compile 967 968**Programmer's note:** :keyword:`global` is a directive to the parser. It 969applies only to code parsed at the same time as the :keyword:`!global` statement. 970In particular, a :keyword:`!global` statement contained in a string or code 971object supplied to the built-in :func:`exec` function does not affect the code 972block *containing* the function call, and code contained in such a string is 973unaffected by :keyword:`!global` statements in the code containing the function 974call. The same applies to the :func:`eval` and :func:`compile` functions. 975 976 977.. _nonlocal: 978 979The :keyword:`!nonlocal` statement 980================================== 981 982.. index:: statement: nonlocal 983 single: , (comma); identifier list 984 985.. productionlist:: python-grammar 986 nonlocal_stmt: "nonlocal" `identifier` ("," `identifier`)* 987 988.. XXX add when implemented 989 : ["=" (`target_list` "=")+ starred_expression] 990 : | "nonlocal" identifier augop expression_list 991 992The :keyword:`nonlocal` statement causes the listed identifiers to refer to 993previously bound variables in the nearest enclosing scope excluding globals. 994This is important because the default behavior for binding is to search the 995local namespace first. The statement allows encapsulated code to rebind 996variables outside of the local scope besides the global (module) scope. 997 998.. XXX not implemented 999 The :keyword:`nonlocal` statement may prepend an assignment or augmented 1000 assignment, but not an expression. 1001 1002Names listed in a :keyword:`nonlocal` statement, unlike those listed in a 1003:keyword:`global` statement, must refer to pre-existing bindings in an 1004enclosing scope (the scope in which a new binding should be created cannot 1005be determined unambiguously). 1006 1007Names listed in a :keyword:`nonlocal` statement must not collide with 1008pre-existing bindings in the local scope. 1009 1010.. seealso:: 1011 1012 :pep:`3104` - Access to Names in Outer Scopes 1013 The specification for the :keyword:`nonlocal` statement. 1014