Merge from 3.2: Issue #12531: add index entries to documentation of * and ** in function calls

This commit is contained in:
Eli Bendersky 2011-07-30 07:07:29 +03:00
commit 6e5b2ac400
1 changed files with 11 additions and 5 deletions

View File

@ -667,12 +667,15 @@ dictionary containing the excess keyword arguments (using the keywords as keys
and the argument values as corresponding values), or a (new) empty dictionary if
there were no excess keyword arguments.
.. index::
single: *; in function calls
If the syntax ``*expression`` appears in the function call, ``expression`` must
evaluate to a sequence. Elements from this sequence are treated as if they were
additional positional arguments; if there are positional arguments *x1*,...,
*xN*, and ``expression`` evaluates to a sequence *y1*, ..., *yM*, this is
equivalent to a call with M+N positional arguments *x1*, ..., *xN*, *y1*, ...,
*yM*.
evaluate to an iterable. Elements from this iterable are treated as if they
were additional positional arguments; if there are positional arguments
*x1*, ... ,*xN*, and ``expression`` evaluates to a sequence *y1*, ..., *yM*,
this is equivalent to a call with M+N positional arguments *x1*, ..., *xN*,
*y1*, ..., *yM*.
A consequence of this is that although the ``*expression`` syntax may appear
*after* some keyword arguments, it is processed *before* the keyword arguments
@ -693,6 +696,9 @@ A consequence of this is that although the ``*expression`` syntax may appear
It is unusual for both keyword arguments and the ``*expression`` syntax to be
used in the same call, so in practice this confusion does not arise.
.. index::
single: **; in function calls
If the syntax ``**expression`` appears in the function call, ``expression`` must
evaluate to a mapping, the contents of which are treated as additional keyword
arguments. In the case of a keyword appearing in both ``expression`` and as an