On Thu, Mar 21, 2019 at 1:54 PM Stefan Behnel <stefan...@behnel.de> wrote:

> Steven D'Aprano schrieb am 21.03.19 um 17:21:
> > On Thu, Mar 21, 2019 at 09:11:18AM -0700, Guido van Rossum wrote:
> >
> >> I don't find it easy to understand or remember that d1.update(d2)
> modifies
> >> d1 in place, while d1.merge(d2) first copies d1.
> >>
> >> Maybe the name can indicate the copying stronger? Like we did with
> sorting:
> >> l.sort() sorts in-place, while sorted(l) returns a sorted copy.
> >
> > How about dict.merged(*args, **kw)? Or dict.updated()?
>
> And then users would accidentally type
>
>     d.updated(items)
>
> and lack the tests to detect that this didn't do anything (except wasting
> some time and memory).
>
> Stefan
>

Generally when I call a method named with a verb on an instance of
something mutable, I expect it to do something on that instance and return
None. So merged() or updated() feels more like a built-in or a function to
import from somewhere, akin to sorted().

Perhaps dict.union(d2) could be considered? Three points in favor: 1) Not a
verb, therefore makes it clearer that it returns something new. 2) Not
confusable with existing dict methods. 3) It matches the name and behavior
of set.union (modulo value conflicts), so will be easier to grok.
_______________________________________________
Python-ideas mailing list
Python-ideas@python.org
https://mail.python.org/mailman/listinfo/python-ideas
Code of Conduct: http://python.org/psf/codeofconduct/

Reply via email to