On 4/4/2014 9:50 AM, random832@fastmail.us wrote:
On Fri, Apr 4, 2014, at 4:54, Terry Reedy wrote:
**kwds in a call is a substitute for writing out unordered key=value specifications. The function may or may not have **kargs in its signature and if it does, the kargs received may or may not be equal to the kwds passed.
The problem is, there is no such thing as "writing out unordered key=value specifications" - anything that is "written out" has an order by its nature;
Before being written, the key=value specification is unordered. The order introduced by writing it out in linear text is spurious.
the fact that this order is lost immediately is a poor abstraction. The desired use case is not to preserve the order of **kwds, it's to preserve the order of a sequence of key=value specifications.
Wanting to preserve spurious order is wrong. What I said before is that if one has meaningful order, one should better use an ordered sequence, both in the definition and call of the function, rather than an unordered (or spuriously ordered) mapping. -- Terry Jan Reedy