I don't know if this works the same for sets, but for dicts, this is the
semantics that everyone has wanted for a long time. It makes doctests (and
similar things) easier to write, reduces a source of nondeterministic
failure, and removes a wart that everyone had to learn:

>>> {"foo": 1, "bar": 2, "baz": 3}
{'baz': 3, 'foo': 1, 'bar': 2}
>>>

It's essentially the same reason as why Python specifies that expressions
are (in most cases) evaluated from left to right. User don't realize that
f()+g() might call g() before f(), and write code that assumes f() is
called first -- the language should not disappoint them, optimization
opportunities be damned.

On Mon, Dec 16, 2019 at 4:23 AM Petr Viktorin <encu...@gmail.com> wrote:

> On 2019-12-16 06:00, Larry Hastings wrote:
> [...]
> >
> > These are all performance concerns.  As I mentioned previously in this
> > thread, in my opinion we should figure out what semantics we want for
> > the object, then implement those, and only after that should we worry
> > about performance.  I think we should decide the question "should set
> > objects maintain insertion order?" literally without any consideration
> > about performance implications.
>
> Then this thread is missing arguments saying *why* ordered dicts are
> actually better, semantics-wise.
>
> Originally, making dicts ordered was all about performance (or rather
> memory efficiency, which falls in the same bucket.) It wasn't added
> because it's better semantics-wise.
> Here's one (very simplified and maybe biased) view of the history of dicts:
>
> * 2.x: Dicts are unordered, please don't rely on the order.
> * 3.3: Dict iteration order is now randomized. We told you not to rely
> on it!
> * 3.6: We now use an optimized implementation of dict that saves memory!
> As a side effect it makes dicts ordered, but that's an implementation
> detail, please don't rely on it.
> * 3.7: Oops, people are now relying on dicts being ordered. Insisting on
> people not relying on it is battling windmills. Also, it's actually
> useful sometimes, and alternate implementations can support it pretty
> easily. Let's make it a language feature! (Later it turns out
> MicroPython can't support it easily. Tough luck.)
>
>
> By itself, "we already made dicts do it" is not a great argument in the
> set *semantics* debate.
> Of course, it may turn out ordering was a great idea semantics-wise as
> well, but if I'm reading correctly, so far this thread has one piece of
> anectodal evidence for that.
> _______________________________________________
> Python-Dev mailing list -- python-dev@python.org
> To unsubscribe send an email to python-dev-le...@python.org
> https://mail.python.org/mailman3/lists/python-dev.python.org/
> Message archived at
> https://mail.python.org/archives/list/python-dev@python.org/message/RFGF4IJ3RHW5QCQGY5P6IUWE336D4OU5/
> Code of Conduct: http://python.org/psf/codeofconduct/
>


-- 
--Guido van Rossum (python.org/~guido)
*Pronouns: he/him **(why is my pronoun here?)*
<http://feministing.com/2015/02/03/how-using-they-as-a-singular-pronoun-can-change-the-world/>
_______________________________________________
Python-Dev mailing list -- python-dev@python.org
To unsubscribe send an email to python-dev-le...@python.org
https://mail.python.org/mailman3/lists/python-dev.python.org/
Message archived at 
https://mail.python.org/archives/list/python-dev@python.org/message/N7ECHMFKSQ7E56CQYGCYMVAJWEZOMVB4/
Code of Conduct: http://python.org/psf/codeofconduct/

Reply via email to