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 运算符的合法分隔符是啥?