From ac31c78bcc08a6f7d1e9ddd242965df6a264314f Mon Sep 17 00:00:00 2001 From: Arthur Milchior Date: Wed, 27 Oct 2021 04:22:10 +0200 Subject: [PATCH 1/2] bpo-45619: documentation of execution model: pattern matching This does two changes that are quite related. 0. it add that variable binding can occur in pattern matching, an update of 3.10 which seems to have been omitted from the list of bindings 1. Given how long the sentence alrady was, with even subcases in the middle of the sentence, the commit breaks the sentence into an actual list. --- Doc/reference/executionmodel.rst | 28 +++++++++++++++++++--------- 1 file changed, 19 insertions(+), 9 deletions(-) diff --git a/Doc/reference/executionmodel.rst b/Doc/reference/executionmodel.rst index 5c85dd7052d673..a112c686472de3 100644 --- a/Doc/reference/executionmodel.rst +++ b/Doc/reference/executionmodel.rst @@ -56,15 +56,25 @@ Binding of names .. index:: single: from; import statement -The following constructs bind names: formal parameters to functions, -:keyword:`import` statements, class and function definitions (these bind the -class or function name in the defining block), and targets that are identifiers -if occurring in an assignment, :keyword:`for` loop header, or after -:keyword:`!as` in a :keyword:`with` statement or :keyword:`except` clause. -The :keyword:`!import` statement -of the form ``from ... import *`` binds all names defined in the imported -module, except those beginning with an underscore. This form may only be used -at the module level. +The following constructs bind names: + +* formal parameters to functions, +* class definitions, +* function definitions, +* assignment expressions, +* :token:`targets ` that are identifiers if occurring in + an assignment: + + + :keyword:`for` loop header, + + after :keyword:`!as` in a :keyword:`with` statement, :keyword:`except` + clause or in the as-pattern in structural pattern matching, + + in a capture pattern in structural pattern matching + +* :keyword:`import` statements. + +The :keyword:`!import` statement of the form ``from ... import *`` binds all +names defined in the imported module, except those beginning with an underscore. +This form may only be used at the module level. A target occurring in a :keyword:`del` statement is also considered bound for this purpose (though the actual semantics are to unbind the name). From ed9b950918e4124a610b9dab963108ddab89e141 Mon Sep 17 00:00:00 2001 From: Arthur Milchior Date: Fri, 26 Nov 2021 02:56:12 +0100 Subject: [PATCH 2/2] Target becomes a reference to assignment --- Doc/reference/executionmodel.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Doc/reference/executionmodel.rst b/Doc/reference/executionmodel.rst index a112c686472de3..e652915bd271c3 100644 --- a/Doc/reference/executionmodel.rst +++ b/Doc/reference/executionmodel.rst @@ -62,7 +62,7 @@ The following constructs bind names: * class definitions, * function definitions, * assignment expressions, -* :token:`targets ` that are identifiers if occurring in +* :ref:`targets ` that are identifiers if occurring in an assignment: + :keyword:`for` loop header,