Python 3 中的 @ 运算符/分隔符是啥? [复制]

Posted

技术标签:

【中文标题】Python 3 中的 @ 运算符/分隔符是啥? [复制]【英文标题】:What is the @ operator/delimiter in Python 3? [duplicate]Python 3 中的 @ 运算符/分隔符是什么? [复制] 【发布时间】:2017-04-06 22:47:35 【问题描述】:

在阅读 Python 3 词法分析时,我对最后一节关于运算符 [1] 和分隔符的内容感到有些困惑。 @ 字符被列为运算符和分隔符,@= 也被列为扩充赋值运算符。按照其他增强赋值运算符的形式,我希望这意味着@ 字符可以像这样使用:

x = x @ y

x @= y

我曾尝试以这种方式将它与整数和字符串一起使用,但没有任何成功。我熟悉将 @ 用于装饰器,但看不到增强赋值运算符如何与装饰器兼容。

@@= 在 Python 3 中用作运算符和/或分隔符时的用途是什么?


[1] Python 3 - 运算符:https://docs.python.org/3/reference/lexical_analysis.html#operators

【问题讨论】:

作为运算符,它是一个矩阵乘法。 a = np.arange(4).reshape(2, 2); b = np.arange(4).reshape(2, 2); print(a @ b) 显示 array([[ 2, 3], [ 6, 11]])。不过,我只看到它适用于 numpy 数组。 @Elliot 你似乎是正确的,但我很想知道这是否适用于 numpy.使用您的示例,我尝试了 a @= b 并收到以下错误:TypeError: In-place matrix multiplication is not (yet) supported. Use 'a = a @ b' instead of 'a @= b'. 【参考方案1】:

Expressions 状态

@ (at) 运算符旨在用于矩阵乘法。没有内置 Python 类型实现此运算符。

所以你必须使用 numpy 或其他数学库来使 x = x @ y 工作。

【讨论】:

以上是关于Python 3 中的 @ 运算符/分隔符是啥? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

Perl 5 的 pick-your-own-quotes 运算符的合法分隔符是啥?

python中的[][](双方括号运算符)运算符是啥?

波浪线(波浪线)(即“~”运算符在 Python 中的作用是啥? [复制]

运算符@在python中的含义是啥[重复]

python中的列表中常用的方法都有哪些,分别是啥作用?

SQL中的自然连接是啥意思啊?