numpy 是如何添加 @ 运算符的?

Qui*_*abo 5 numpy python-3.x

他们是如何做到的呢?我也可以将自己的新运算符添加到 Python 3 中吗?我在谷歌上搜索,但没有找到任何这方面的信息。

Tim*_*ers 7

不,您不能添加自己的。numpy 团队与核心 Python 团队合作将其添加@到核心语言中,它位于核心 Python 文档中(例如,在运算符优先级表中),尽管核心 Python 并未将其用于标准 CPython 发行版中的任何内容。尽管如此,核心发行版仍可识别运算符符号,并BINARY_MATRIX_MULTIPLY为其生成适当的操作码:

>>> import dis
>>> def f(a, b):
...     return a @ b
>>> dis.dis(f)
  2           0 LOAD_FAST                0 (a)
              2 LOAD_FAST                1 (b)
              4 BINARY_MATRIX_MULTIPLY
              6 RETURN_VALUE
Run Code Online (Sandbox Code Playgroud)


小智 5

回答你的第二个问题,

我也可以将自己的新运算符添加到 Python 3 中吗?

可以在这里找到类似的问题和一些非常有趣的答案,Python:定义我自己的运算符?

最近,在 PyCon US 2022 上,Sebastiaan Zeeff 发表了一场演讲,展示了如何实现新的运算符。他警告说,实施纯粹是为了教育目的。然而,事实证明您实际上可以自己实现一个新的运算符!当然是在本地:)。您可以在此处找到他的演讲,并在此处找到他的代码存储库。如果您认为您的操作员可以增强 Python 语言,为什么不为其提出 PEP ?