Прочитав лексический анализ Python 3, я немного запутался в последнем разделе о операторах [1] и разделителях. Символ @
указан как оператор и разделитель, а @=
также указан как расширенный оператор присваивания. После формы других форсированных операторов присваивания, я бы ожидать, что это означает, что @
символ может быть использован как так:Что такое @ operator/delimiter в Python 3?
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
@Elliot, вы действительно выглядите правильно, но мне бы хотелось узнать, работает ли это за пределами numpy. Используя ваш пример, я попробовал 'a @ = b' и получил следующую ошибку: ' TypeError: Матричное умножение на месте не поддерживается (пока). Используйте 'a = a @ b' вместо 'a @ = b'.' –