[Python-Dev] Very Strange Argument Handling Behavior

Guido van Rossum guido at python.org
Fri Apr 16 23:31:25 CEST 2010

On Fri, Apr 16, 2010 at 2:22 PM, Maciej Fijalkowski <fijall at gmail.com> wrote:
> On Fri, Apr 16, 2010 at 3:11 PM, Raymond Hettinger
> <raymond.hettinger at gmail.com> wrote:
>>>> Guido van Rossum, 16.04.2010 16:33:
>>>>> I am fine with
>>>>> declaring dict({}, **{1:3}) illegal, since after all it is abuse of
>>>>> the ** mechanism.
>> ISTM that making it illegal costs cycles with giving any real benefit.
>> It is reasonably common to accept **kwds and then pass it down
>> to another function.  Do we want to validate the keys of every
>> kwds dict on every call?  Why do we even care?
>> If I'm understanding the proposal correctly, it means that
>> every existing application using **kwds will pay a price, either
>> by breaking (because it uses non-string keys) or by running
>> slower (so that every call can be checked to make sure it
>> didn't use string keys).
>> Raymond
> On the other hand, we (as in alternative python implementations) are
> paying the price because people use it, even if only accidentally. If
> CPython detects such cases and complain early, it would be much easier
> for applications to stay cross-interpreter compatible (and I don't
> think it's a huge burden for them to get rid of that, django already
> did).


Apparently dict(x, **y) is going around as "cool hack" for "call
x.update(y) and return x". Personally I find it more despicable than

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

More information about the Python-Dev mailing list