[Python-ideas] A sorted version of **kwargs

Guido van Rossum guido at python.org
Thu Jan 20 17:42:20 CET 2011

On Thu, Jan 20, 2011 at 6:05 AM, M.-A. Lemburg <mal at egenix.com> wrote:
> Nick Coghlan wrote:
>> On Thu, Jan 20, 2011 at 8:28 PM, Steven D'Aprano <steve at pearwood.info> wrote:
>>> I would be +0 on making **kwargs an ordered dict automatically, and -1 on
>>> adding ***ordered_kwargs. Because kwargs is mostly used only for argument
>>> passing, and generally with only a small number of items, it probably
>>> doesn't matter too much if it's slightly slower than an unordered dict.
>> Yeah, simply making the kwargs dict always ordered is likely the way
>> we would do it. That's also the only solution with any chance of
>> working by default with the way most decorators are structured
>> (accepting *args and **kwargs and passing them to the wrapped
>> function).
> -1.
> How often do you really need this ?
> In which of those cases wouldn't a static code analysis give you
> the call order of the parameters already  ?
> "Nice to have" is not good enough to warrant a slow down of
> all function calls involving keyword arguments, adding overhead
> for other Python implementations and possibly causing problems
> with 3rd party extensions relying on getting a PyDict for the
> keyword arguments object.

What he says.

In addition, I wonder what the semantics would be if the caller passed
**d where d was an *unordered* dict...

--Guido van Rossum (python.org/~guido)

More information about the Python-ideas mailing list