dict.merge(d, ...) and dict.diff(d, ...) are more expressive and have a cleaner semantic.
overloading arithmetic ops for string, list or dict ops might only look elegant at first sight, but discrimination needs to be done at runtime, slowing down the most important arithmetic ops, and do not help much the casual code reader.
It also cannot be used in normal python code as older python will fail, only in special internal code.
normal method names can be provided by external modules, so they are backwards compatible and will find more widely adoption.
Students are supposed to set things on fire and find various nifty features for learning's sake. But with experience - and the discovery that various such features largely overlap (eg. + and .extend()), one tends to grow out of that stance and become wiser.
the problem with overloading add is that add results in more than merge. merge is add minus the duplicate keys. students shouldn't learn wrong semantics.
overloading arithmetic ops for string, list or dict ops might only look elegant at first sight, but discrimination needs to be done at runtime, slowing down the most important arithmetic ops, and do not help much the casual code reader. It also cannot be used in normal python code as older python will fail, only in special internal code.
normal method names can be provided by external modules, so they are backwards compatible and will find more widely adoption.