[Python-ideas] PEP: Dict addition and subtraction

Steven D'Aprano steve at pearwood.info
Thu Mar 21 22:14:51 EDT 2019


On Thu, Mar 21, 2019 at 08:13:01PM -0400, David Mertz wrote:

> On Thu, Mar 21, 2019, 7:48 PM Steven D'Aprano <steve at pearwood.info> wrote:
[...]
> Nonetheless, if I see `dict1 + dict2` the meaning you intend in the PEP
> does not jump out as the obvious behavior. Nor even as the most useful
> behavior. 

What would be the most useful behaviour for dict "addition" in your 
opinion?


> Of course I could learn it and teach it, but it will always feel
> like a wart in the language.

Would that wartness be lessoned if it were spelled | or << instead?

 
> In contrast, once you tell me about the special object "vectorised arrays",
> `arr1 + arr2` does exactly what is expect in NumPy.

I don't know Numpy well enough to know whether that is elementwise 
addition or concatenation or something else, so that example doesn't 
resonate with me. I can't guess what you expect, and I have no 
confidence that my guess (matrix addition of equal-sized arrays, an 
exception if unequal) will be what Numpy does.


> > And your subjective feeling is well-noted :-)
> 
> This is more than "merely subjective."

If it is more than subjective, then there must be an objective test that 
anyone, or a computer program, could do to tell whether or not the + 
operator on dicts will be ... um, what? A wart? Ugly? Both of those are 
subjective value judgements, so I'm not sure what objective claim you 
believe you are making which is "more than" subjective.

The point is, I'm not *discounting* the subjective claims that + on 
dicts is ugly. I've acknowledged them, and the next draft of the PEP 
will do so too. But repetition doesn't make a subjective value judgement 
objective.

It might boil down to a subjective preference for + over | or visa 
versa, or another operator, or no operator at all. That's fine: language 
design is partly subjective. But I'd like to see more comments based on 
objective reasons we can agree on, and fewer arguments that boil down to 
"I just don't like it".



-- 
Steven


More information about the Python-ideas mailing list