@@ -284,7 +284,7 @@ A list display is a possibly empty series of expressions enclosed in square
284284brackets:
285285
286286.. productionlist :: python-grammar 
287-    list_display: "[" [`starred_list ` | `comprehension `] "]"
287+    list_display: "[" [`flexible_expression_list ` | `comprehension `] "]"
288288
289289A list display yields a new list object, the contents being specified by either
290290a list of expressions or a comprehension.  When a comma-separated list of
@@ -309,7 +309,7 @@ A set display is denoted by curly braces and distinguishable from dictionary
309309displays by the lack of colons separating keys and values:
310310
311311.. productionlist :: python-grammar 
312-    set_display: "{" (`starred_list ` | `comprehension `) "}"
312+    set_display: "{" (`flexible_expression_list ` | `comprehension `) "}"
313313
314314A set display yields a new mutable set object, the contents being specified by
315315either a sequence of expressions or a comprehension.  When a comma-separated
@@ -454,7 +454,7 @@ Yield expressions
454454.. productionlist :: python-grammar 
455455   yield_atom: "(" `yield_expression ` ")"
456456   yield_from: "yield" "from" `expression `
457-    yield_expression: "yield" `expression_list ` | `yield_from `
457+    yield_expression: "yield" `yield_list ` | `yield_from `
458458
459459The yield expression is used when defining a :term: `generator ` function
460460or an :term: `asynchronous generator ` function and
@@ -485,9 +485,9 @@ When a generator function is called, it returns an iterator known as a
485485generator.  That generator then controls the execution of the generator
486486function.  The execution starts when one of the generator's methods is called.
487487At that time, the execution proceeds to the first yield expression, where it is
488- suspended again, returning the value of :token: `~python-grammar:expression_list  `
488+ suspended again, returning the value of :token: `~python-grammar:yield_list  `
489489to the generator's caller,
490- or ``None `` if :token: `~python-grammar:expression_list  ` is omitted.
490+ or ``None `` if :token: `~python-grammar:yield_list  ` is omitted.
491491By suspended, we mean that all local state is
492492retained, including the current bindings of local variables, the instruction
493493pointer, the internal evaluation stack, and the state of any exception handling.
@@ -576,7 +576,7 @@ is already executing raises a :exc:`ValueError` exception.
576576   :meth: `~generator.__next__ ` method, the current yield expression always
577577   evaluates to :const: `None `.  The execution then continues to the next yield
578578   expression, where the generator is suspended again, and the value of the
579-    :token: `~python-grammar:expression_list  ` is returned to :meth: `__next__ `'s
579+    :token: `~python-grammar:yield_list  ` is returned to :meth: `__next__ `'s
580580   caller.  If the generator exits without yielding another value, a
581581   :exc: `StopIteration ` exception is raised.
582582
@@ -695,7 +695,7 @@ how a generator object would be used in a :keyword:`for` statement.
695695Calling one of the asynchronous generator's methods returns an :term: `awaitable `
696696object, and the execution starts when this object is awaited on. At that time,
697697the execution proceeds to the first yield expression, where it is suspended
698- again, returning the value of :token: `~python-grammar:expression_list  ` to the
698+ again, returning the value of :token: `~python-grammar:yield_list  ` to the
699699awaiting coroutine. As with a generator, suspension means that all local state
700700is retained, including the current bindings of local variables, the instruction
701701pointer, the internal evaluation stack, and the state of any exception handling.
@@ -759,7 +759,7 @@ which are used to control the execution of a generator function.
759759   asynchronous generator function is resumed with an :meth: `~agen.__anext__ `
760760   method, the current yield expression always evaluates to :const: `None ` in the
761761   returned awaitable, which when run will continue to the next yield
762-    expression. The value of the :token: `~python-grammar:expression_list  ` of the
762+    expression. The value of the :token: `~python-grammar:yield_list  ` of the
763763   yield expression is the value of the :exc: `StopIteration ` exception raised by
764764   the completing coroutine.  If the asynchronous generator exits without
765765   yielding another value, the awaitable instead raises a
@@ -892,7 +892,7 @@ will generally select an element from the container. The subscription of a
892892:ref: `GenericAlias  <types-genericalias >` object.
893893
894894.. productionlist :: python-grammar 
895-    subscription: `primary ` "[" `expression_list ` "]"
895+    subscription: `primary ` "[" `flexible_expression_list ` "]"
896896
897897When an object is subscripted, the interpreter will evaluate the primary and
898898the expression list.
@@ -904,9 +904,13 @@ primary is subscripted, the evaluated result of the expression list will be
904904passed to one of these methods. For more details on when ``__class_getitem__ ``
905905is called instead of ``__getitem__ ``, see :ref: `classgetitem-versus-getitem `.
906906
907- If the expression list contains at least one comma, it will evaluate to a
908- :class: `tuple ` containing the items of the expression list. Otherwise, the
909- expression list will evaluate to the value of the list's sole member.
907+ If the expression list contains at least one comma, or if any of the expressions
908+ are starred, the expression list will evaluate to a :class: `tuple ` containing
909+ the items of the expression list. Otherwise, the expression list will evaluate
910+ to the value of the list's sole member.
911+ 
912+ .. versionchanged :: 3.11 
913+    Expressions in an expression list may be starred. See :pep: `646 `.
910914
911915For built-in objects, there are two types of objects that support subscription
912916via :meth: `~object.__getitem__ `:
@@ -1905,10 +1909,12 @@ Expression lists
19051909   single: , (comma); expression list
19061910
19071911.. productionlist :: python-grammar 
1912+    starred_expression: ["*"] `or_expr `
1913+    flexible_expression: `assignment_expression ` | `starred_expression `
1914+    flexible_expression_list: `flexible_expression ` ("," `flexible_expression `)* [","]
1915+    starred_expression_list: `starred_expression ` ("," `starred_expression `)* [","]
19081916   expression_list: `expression ` ("," `expression `)* [","]
1909-    starred_list: `starred_item ` ("," `starred_item `)* [","]
1910-    starred_expression: `expression ` | (`starred_item ` ",")* [`starred_item `]
1911-    starred_item: `assignment_expression ` | "*" `or_expr `
1917+    yield_list: `expression_list ` | `starred_expression ` "," [`starred_expression_list `]
19121918
19131919.. index :: pair: object; tuple 
19141920
@@ -1929,6 +1935,9 @@ the unpacking.
19291935.. versionadded :: 3.5 
19301936   Iterable unpacking in expression lists, originally proposed by :pep: `448 `.
19311937
1938+ .. versionadded :: 3.11 
1939+    Any item in an expression list may be starred. See :pep: `646 `.
1940+ 
19321941.. index :: pair: trailing; comma 
19331942
19341943A trailing comma is required only to create a one-item tuple,
0 commit comments