[Python-ideas] namedtuple literals [Was: RE a new namedtuple]
ethan at stoneleaf.us
Wed Jul 26 13:44:01 EDT 2017
On 07/26/2017 09:05 AM, Nick Coghlan wrote:
> On 26 July 2017 at 11:05, Steven D'Aprano <steve at pearwood.info> wrote:
>> I don't see any way that this proposal can be anything by a subtle
>> source of bugs. We have two *incompatible* requirements:
>> - we want to define the order of the fields according to the
>> order we give keyword arguments;
>> - we want to give keyword arguments in any order without
>> caring about the field order.
>> We can't have both, and we can't give up either without being a
>> surprising source of annoyance and bugs.
> I think the second stated requirement isn't a genuine requirement, as
> that *isn't* a general expectation.
I have to agree with D'Aprano on this one. I certainly do not *expect* keyword argument position to matter, and it
seems to me the primary reason to make it matter was not for dicts, but because a class name space is implemented by dicts.
Tuples, named or otherwise, are positional first -- order matters. Specifying
point = ntuple(y=2, x=-3)
and having point == 3 is going to be bizarre. This will be a source for horrible bugs.
More information about the Python-ideas