[Python-ideas] Adding "+" and "+=" operators to dict
Nathan Schneider
neatnate at gmail.com
Thu Feb 12 22:32:23 CET 2015
More information about the Python-ideas mailing list
Thu Feb 12 22:32:23 CET 2015
- Previous message: [Python-ideas] Adding "+" and "+=" operators to dict
- Next message: [Python-ideas] Adding "+" and "+=" operators to dict
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
On Thu, Feb 12, 2015 at 12:15 PM, Paul Moore <p.f.moore at gmail.com> wrote: > On 12 February 2015 at 19:22, Thomas Kluyver <thomas at kluyver.me.uk> wrote: > > On 12 February 2015 at 11:14, Paul Moore <p.f.moore at gmail.com> wrote: > >> > >> (the "new dependency" then would be not supporting Python <3.5 (or > >> whatever)) > > > > I've seen this argument a few times on python-ideas, and I don't > understand > > it. By this rationale, there's little point ever adding any new feature > to > > Python, because people who need to support older versions can't use it. > > To me, it means that anything that gets added to Python should be > significant enough to be worth waiting for. > > > By posting on python-ideas, you're implicitly prepared to take the long > term > > view - these are ideas that we might be able to really use in a few > years. > > One day, relying on Python 3.5 or above will be completely reasonable, > and > > then we can take advantage of the things we're adding to it now. It's > like > > an investment in code. > > That's a fair point. You do make me think - when looking at new > features, part of the long term view is to look at making sure a > proposal is clean and well thought through, so that it's something > people will be looking forward to, not merely something "good enough" > to provide a feature. > > Evaluating the various proposals we've seen on that basis (and I > concede this is purely my personal feeling): > > 1. + and += on dictionaries. Looking far enough into the future, I can > see a time when people will see these as obvious and natural analogues > of list and string concatenation. There's a shorter-term problem with > the transition, particularly the fact that a lot of people currently > don't find the "last addition wins" behavior obvious, and the > performance characteristics of repeated addition (with copying). I > could see dict1 + dict2 being seen as a badly-performing anti-pattern, > much like string +, perfectly OK for simple cases but don't use it if > performance matters. And performance is more likely to matter with > dicts than strings. > > 2. | and |=. I can't imagine ever liking these. I don't like them for > sets, either. Personal opinion certainly. > > 3. A dict method. Not sure. It depends strongly on the name chosen. > And although it's not a strict rule (sets in particular break it) I > tend to think of methods as being mutating, not creating new copies. > > 4. An updated() builtin. Feels clean and has a nice parallel with > sorted(). But it's a common word that is often used as a variable, and > I don't think (long term view again!) that a pattern of proliferating > builtins as non-mutating versions of methods is a good one to > encourage. > > A reminder about PEP 448: Additional Unpacking Generalizations ( https://www.python.org/dev/peps/pep-0448/), which claims that "it vastly simplifies types of 'addition' such as combining dictionaries, and does so in an unambiguous and well-defined way". The spelling for combining two dicts would be: {**d1, **d2} Cheers, Nathan > >> why not create a function, put it on PyPI and collect usage stats > > > > Does anyone seriously believe that people will add a dependency which > > contains a single three line function? > > I'm sorry, that was a snarky suggestion. (Actually my whole post was > pretty snarky. Hopefully, this post is fairer.) > > I do think this is a reasonable situation to invoke the principle that > not every 3-line code snippet deserves to be a builtin. Steven posted > a pretty simple updated() function that projects can use, and I don't > really understand why people can sometimes be so reluctant to include > such utilities in their code. > > Anyway, overall I still remain unconvinced that this is worth adding, > but hopefully the above explains my thinking better. > > Sorry again for the tone of my previous response. > Paul > _______________________________________________ > Python-ideas mailing list > Python-ideas at python.org > https://mail.python.org/mailman/listinfo/python-ideas > Code of Conduct: http://python.org/psf/codeofconduct/ > -------------- next part -------------- An HTML attachment was scrubbed... URL: <http://mail.python.org/pipermail/python-ideas/attachments/20150212/86fc7924/attachment.html>
- Previous message: [Python-ideas] Adding "+" and "+=" operators to dict
- Next message: [Python-ideas] Adding "+" and "+=" operators to dict
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
More information about the Python-ideas mailing list