The problem is not in the “normal” common arguments, but in the “exceptional” additional ones that the dual-use enables.
x=[1, 2]; y= [3, 4]; z = [5, 6]; np.add(x, y, z) would be clearer as
np.add(x, y, out=z) since 99% of users meant
np.add(np.add(x, y), z) but mistakenly thought they could use many operands at once. But all that is water under the bridge the real problem is
any problem that happen now will keep happening with this PEP and without
True, but the PEP would enable and encourage package maintainers to use more advanced syntax out-of-step (in my opinion) with users’ (as I percieve them) needs, complicating the language and raising barriers for new users. As others have said, the docstring for np.add requires quite a bit of mental effort to parse, exactly what is lacking when trying to debug an already confusing error. I have had students look at that dsl and prefer to try various code snippets rather than understand what it means.