On Thu, Apr 26, 2018 at 12:25 PM, Serhiy Storchaka <storch...@gmail.com> wrote: > f(b=2, *[1]) is surprised in two ways: > > 1. Argument values are passed not in order. The first value is assigned to > the second parameter, and the second value is assigned to the first > parameter. > > 2. Argument values are evaluated not from left to right. This contradicts > the general rule that expressions are evaluated from left to right (with few > known exceptions). > > I never seen the form `f(b=2, *[1])` in practice (though the language > reference contains an explicit example for it), and it looks weird to me. I > don't see reasons of writing `f(b=2, *[1])` instead of more natural `f(*[1], > b=2)`. I propose to disallow it.
Coincidentally, I recently came across and reviewed a PR to Django that proposed exactly this, or at least something very similar. They proposed changing-- def create_cursor(self, name=None): to-- def create_cursor(self, name=None, *args, **kwargs): https://github.com/django/django/pull/9674/files#diff-53fcf3ac0535307033e0cfabb85c5301R173 --Chris > > This will also make the grammar simpler. Current grammar: > > argument_list: `positional_arguments` ["," `starred_and_keywords`] > : ["," `keywords_arguments`] > : | `starred_and_keywords` ["," `keywords_arguments`] > : | `keywords_arguments` > positional_arguments: ["*"] `expression` ("," ["*"] `expression`)* > starred_and_keywords: ("*" `expression` | `keyword_item`) > : ("," "*" `expression` | "," `keyword_item`)* > keywords_arguments: (`keyword_item` | "**" `expression`) > : ("," `keyword_item` | "," "**" `expression`)* > keyword_item: `identifier` "=" `expression` > > Proposed grammar: > > argument_list: `positional_arguments` ["," `keywords_arguments`] > : | `keywords_arguments` > positional_arguments: ["*"] `expression` ("," ["*"] `expression`)* > keywords_arguments: `keyword_argument` ("," `keyword_argument`)* > keyword_argument: `identifier` "=" `expression` | "**" `expression` > > _______________________________________________ > Python-Dev mailing list > Python-Dev@python.org > https://mail.python.org/mailman/listinfo/python-dev > Unsubscribe: > https://mail.python.org/mailman/options/python-dev/chris.jerdonek%40gmail.com _______________________________________________ Python-Dev mailing list Python-Dev@python.org https://mail.python.org/mailman/listinfo/python-dev Unsubscribe: https://mail.python.org/mailman/options/python-dev/archive%40mail-archive.com