[Python-Dev] The interpreter accepts f(**{'5':'foo'}); is this intentional?
Eric Smith
eric at trueblade.com
Thu Feb 5 16:39:08 CET 2009
Calvin Spealman wrote:
> I would favor this not being constrained. I don't want every use of **
> to cause a pattern match to verify each key. I would even be fine
> without the check for being strings. Define what it should be, but let
> the implementation be lax. It is no different from any other place
> where you need to know its not a promise, just an artifact, and
> shouldn't rely on what the implementation currently does or does not
> force.
I agree. There was a similar issue in http://bugs.python.org/issue2598,
and we decided not to do anything about it.
Eric.
>
> On Thu, Feb 5, 2009 at 3:03 AM, Michael Haggerty <mhagger at alum.mit.edu> wrote:
>> I can't find documentation about whether there are constraints imposed
>> on the keys in the map passed to a function via **, as in f(**d).
>>
>> According to
>>
>> http://docs.python.org/reference/expressions.html#id9
>>
>> , d must be a mapping.
>>
>> test_extcall.py implies that the keys of this map must be strings in the
>> following test:
>>
>> >>> f(**{1:2})
>> Traceback (most recent call last):
>> ...
>> TypeError: f() keywords must be strings
>>
>> But must the keys be valid python identifiers?
>>
>> In particular, the following is allows by the Python 2.5.2 and the
>> Jython 2.2.1 interpreters:
>>
>> >>> f(**{'1':2})
>> {'1': 2}
>>
>> Is this behavior required somewhere by the Python language spec, or is
>> it an error that just doesn't happen to be checked, or is it
>> intentionally undefined whether this is allowed?
>>
>> Michael
>> _______________________________________________
>> Python-Dev mailing list
>> Python-Dev at python.org
>> http://mail.python.org/mailman/listinfo/python-dev
>> Unsubscribe: http://mail.python.org/mailman/options/python-dev/ironfroggy%40gmail.com
>>
>
>
>
More information about the Python-Dev
mailing list