diff -r 5adf995d443f Doc/reference/expressions.rst --- a/Doc/reference/expressions.rst Mon Jul 06 14:03:01 2015 +0300 +++ b/Doc/reference/expressions.rst Mon Jul 13 01:16:19 2015 +0300 @@ -649,16 +649,26 @@ .. productionlist:: call: `primary` "(" [`argument_list` [","] | `comprehension`] ")" - argument_list: `positional_arguments` ["," `keyword_arguments`] - : ["," "*" `expression`] ["," `keyword_arguments`] - : ["," "**" `expression`] - : | `keyword_arguments` ["," "*" `expression`] - : ["," `keyword_arguments`] ["," "**" `expression`] - : | "*" `expression` ["," `keyword_arguments`] ["," "**" `expression`] - : | "**" `expression` - positional_arguments: `expression` ("," `expression`)* - keyword_arguments: `keyword_item` ("," `keyword_item`)* - keyword_item: `identifier` "=" `expression` + argument_list: (`positional_argument` | `starred_argument`)* + : ("," `keyword_argument` | `starred_argument`)* + : ("," `keyword_argument` | `starred_keyword_argument`)* + positional_argument: `expression` + starred_argument: "*" `expression` + keyword_argument: `identifier` "=" `expression` + starred_keyword_argument: "**" `expression` + +.. versionchanged:: 3.5 + Function calls accept any number of ``*`` and ``**`` unpackings. + + Keyword arguments must follow positional arguments, and ``**`` unpackings must follow ``*`` unpackings:: + + function( + argument or *args, argument or *args, ..., + kwargument or *args, kwargument or *args, ..., + kwargument or **kwargs, kwargument or **kwargs, ... + ) + + See :pep:`448` for more details about unpacking generalizations. An optional trailing comma may be present after the positional and keyword arguments but does not affect the semantics.