mirror of
https://github.com/python/cpython.git
synced 2025-08-04 00:48:58 +00:00
gh-96397: Document that keywords in calls need not be identifiers (#96393)
This represents the official SC stance, see https://github.com/python/steering-council/issues/142#issuecomment-1252172695
This commit is contained in:
parent
282edd7b2a
commit
9d432b4a18
1 changed files with 12 additions and 2 deletions
|
@ -1054,10 +1054,20 @@ used in the same call, so in practice this confusion does not often 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.
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue