[Python-ideas] Alternative spelling for list.append()
steve at pearwood.info
Sun Jun 17 20:50:29 EDT 2018
On Mon, Jun 18, 2018 at 10:07:07AM +1000, Chris Angelico wrote:
> On Mon, Jun 18, 2018 at 9:36 AM, Clint Hepner <clint.hepner at gmail.com> wrote:
> > That’s false. @ was added solely for matrix multiplication.
> Ah, confusing bit of language there.
It certainly is. You are talking about *types* and Clint is talking
about *semantics*. As you point out below, you are correct: the @
operator works for any type which defines the correct dunder method:
> >>> class Foo:
> ... def __matmul__(self, other):
> ... print("Me @", other)
> >>> Foo() @ 5
> Me @ 5
Clint's point that the *motivation* was a single use-case, matrix
multiplication in numpy, is a separate issue.
Mikhail's motivation might solely be appending to lists, but we would
expect this to be a protocol with a dunder method that any type could
> (It's also worth noting that the @ operator is unique in being created
> solely for the benefit of third-party types. Every other operator is
> supported by the core types - usually by many of them.
That's not quite correct: although it isn't strictly speaking an
operator, extended slice notation x[a:b:c] was invented for numpy, and
for a while (Python 1.4 I think?) no core type supported it.
Similarly for using Ellipsis ... in slices. As far as I know, there is
still no core type which supports that.
More information about the Python-ideas