[Python-Dev] Order of positional and keyword arguments
Antoine Pitrou
solipsis at pitrou.net
Fri Apr 27 05:59:38 EDT 2018
On Thu, 26 Apr 2018 22:25:09 +0300
Serhiy Storchaka <storchaka at 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.
I don't find it that surprising. If you write f(b=2, a=1), you are
also passing arguments "not in order", but it still looks ok to me.
> 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).
Well... If you have code that relies on that rule, I would agree it's
brittle code and should be rewritten differently (perhaps by assigning
to temporary variables explicitly).
Regards
Antoine.
More information about the Python-Dev
mailing list