
On Sun, Apr 19, 2020 at 12:09:54PM +0200, Alex Hall wrote:
Please read what I said again, because that's a mischaracterisation of what I said.
I don't think it is. You said 'it ought to be something "like" an expression', and then that actually being an expression is not essential. How is it unfair to rephrase that as "something that looks like an expression even if it isn't"?
I don't *require* it to look like an expression when it's not. What I said was that it should look like an expression *rather than a mode*. But whatever -- if you want to stick with your wording, I'm not going to argue that point any further. There are more important things to discuss. Namely your side-note:
Side note: what does this mean in your proposal? I'm guessing it's a SyntaxError?
foo(a, b, **{u, v}, c, d)
Yes, because we still have a restriction that positional arguments come before keyword arguments. If that restriction is ever relaxed, then this may become legal.
So, as Dominik pointed out, why keep this restriction?
Because that's the conservative choice that doesn't lock out future language development unnecessarily. Today, we allow positional unpacking after keyword arguments: func(a, b=1, c=2, *args) Perhaps some day we will want to allow regular positional arguments after keywords too. If we don't *need* to rule that out, why do so unnecessarily? All else being equal, we should prefer the syntax that doesn't rule out future development. -- Steven