[Python-ideas] Let's be more orderly!

Jim Jewett jimjjewett at gmail.com
Wed May 15 02:45:20 CEST 2013


On Tue, May 14, 2013 at 7:34 PM, Steven D'Aprano <steve at pearwood.info> wrote:
> On Tue, May 14, 2013 at 12:53:53PM -0700, Jonathan Eunice wrote:

>> But from an app developer’s point of view, ordering is a basic, essential
>> property.

> Speak for yourself. I don't think it is, and while having a fixed order
> is sometimes useful, often it is not necessary.

The fact that it is often useful -- if only for debugging and testing
-- can make
it seem like a basic property that shouldn't be sacrificed without a reason.

Think of the contortions that dict code (prior to the Denial Of Service scare)
went through to maintain a stable (albeit arbitrary) order.

I also suspect I'm not the only one who looks at the self.(var) = (var) of an
__init__ function and feels that the arguments are really more of an
association-list, so that creating a map was just wasted work.  I do NOT
propose to fix this code smell in the general case, though.


> Frankly, with the exception of OrderedDict itself, if your functions
> would like to treat kwargs args differently based on their order, e.g.
> func(a=1, b=2) vs func(b=2, a=1), I think your design may be broken.

I agree.  But the line between "broken" and "easier to debug" isn't
always bright.  (That said, if kwargs in particular were essentially
ordered, I would want to allow repeats, as do the web mappings.
I'm not sure that would be a net positive for readability.)

>> Historically, sort features were usually unstable because that’s easier to
>> implement

Not really, for the more obvious algorithms.  But those aren't  the fastest.

>> and faster to run. Over time, stable sort has become the norm,

> Stable sorting is intuitively correct.

My intuition is that if two objects are equal, it shouldn't matter what
order they come in.  Preference for a stable sort only comes after
lots of experience with data flows involving (or abusing) multi-step sorts.

-jJ


More information about the Python-ideas mailing list