2016-11-23 60 views
0

在閱讀Python 3詞法分析時,我對操作符[1]和分隔符的最後一節略感困惑。 @字符被列爲運算符和分隔符,並且@=也被列爲增強賦值運算符。繼其他賦值運算的形式,我希望這意味着@字符可以像這樣使用:Python 3中的@操作符/分隔符是什麼?

x = x @ y 

x @= y 

我以這種方式與整數使用它試圖和字符串沒有任何成功。我熟悉使用@作爲裝飾器,但未能看到擴展賦值運算符如何與裝飾器兼容。

當用作Python 3中的運算符和/或分隔符時,@@=的用途是什麼?


[1]的Python 3 - 運營商:https://docs.python.org/3/reference/lexical_analysis.html#operators

+0

作爲一個運算符,它是一個矩陣乘法。 'a = np.arange(4).reshape(2,2); b = np.arange(4).reshape(2,2); print(a @ b)'顯示'array([[2,3],[6,11]])'。我只看到它與numpy數組一起工作。 – Elliot

+0

@Elliot你確實看起來是正確的,但我很想知道這是否在numpy之外工作。使用你的例子,我嘗試了'a @ = b',並收到以下錯誤: 'TypeError:原地矩陣乘法不被支持。使用'a = a @ b'而不是'a @ = b'.' –

回答

0

Expressions狀態

The @ (at) operator is intended to be used for matrix multiplication. No builtin Python types implement this operator.

所以,你必須使用numpy的或其他數學庫,使x = x @ y工作。

相關問題