Skip to content

Commit

Permalink
pythongh-96397: Document that keywords in calls need not be identifie…
Browse files Browse the repository at this point in the history
…rs (pythonGH-96393)

This represents the official SC stance, see
https://github.com/python/steering-council/issues/142GH-issuecomment-1252172695
(cherry picked from commit 9d432b4)

Co-authored-by: Jeff Allen <ja.py@farowl.co.uk>
  • Loading branch information
jeff5 authored and miss-islington committed Sep 22, 2022
1 parent 43d8860 commit 83ca7c5
Showing 1 changed file with 12 additions and 2 deletions.
14 changes: 12 additions & 2 deletions Doc/reference/expressions.rst
Original file line number Diff line number Diff line change
Expand Up @@ -1049,10 +1049,20 @@ used in the same call, so in practice this confusion does not arise.
If the syntax ``**expression`` appears in the function call, ``expression`` must
evaluate to a :term:`mapping`, the contents of which are treated as
additional keyword arguments. If a keyword is already present
(as an explicit keyword argument, or from another unpacking),
additional keyword arguments. If a parameter matching a key has already been
given a value (by an explicit keyword argument, or from another unpacking),
a :exc:`TypeError` exception is raised.

When ``**expression`` is used, each key in this mapping must be
a string.
Each value from the mapping is assigned to the first formal parameter
eligible for keyword assignment whose name is equal to the key.
A key need not be a Python identifier (e.g. ``"max-temp °F"`` is acceptable,
although it will not match any formal parameter that could be declared).
If there is no match to a formal parameter
the key-value pair is collected by the ``**`` parameter, if there is one,
or if there is not, a :exc:`TypeError` exception is raised.

Formal parameters using the syntax ``*identifier`` or ``**identifier`` cannot be
used as positional argument slots or as keyword argument names.

Expand Down

0 comments on commit 83ca7c5

Please sign in to comment.