[Python-Dev] Ordering keyword dicts (original) (raw)

Chris Angelico rosuav at gmail.com
Tue May 21 00:31:23 CEST 2013


On Mon, May 20, 2013 at 11:35 AM, Greg Ewing <greg.ewing at canterbury.ac.nz> wrote:

Joao S. O. Bueno wrote:

Actually, when I was thinking on the subject I came to the same idea, of having some functions marked differently so they would use a different call mechanism - but them I wondered around having a different opcode for the ordered-dict calls. Would that be feasible? No, because the callee is the only one that knows whether it requires its keyword args to be ordered. In fact, not even the callee might know at the time of the call. Consider a function that takes **kwds and passes them on to another function that requires ordered keywords.

I wouldn't be bothered by that case, as it's no different from any other means of stuffing a dictionary through **kwds. If you want to preserve order through a wrapper, the wrapper needs to be declared to preserve order. The trouble is that there can't be any compile-time lookup to determine what (type of) function will be called, ergo this can't be resolved with a unique bytecode based on the destination.

How big a deal would it be to bless OrderedDict with a special literal notation? Something like:

od = o{'a': 1, 'b': 2, 'c': 3}

Much of the need for ordered kwargs is for constructing OrderedDict itself after all (cf Antoine).

ChrisA



More information about the Python-Dev mailing list