2016-11-23 7 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 = b'の代わりに 'a = a @ b'を使用してください。 –

答えて

0

Expressions状態

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

ですから、x = x @ y仕事をするためにnumpyのか、他の数学ライブラリを使用する必要があります。

関連する問題