【发布时间】: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'.
标签: python python-3.x operators delimiter