
А вы знали, что помимо обыденных операторов +, -, *, / и прочих, есть еще операторы @ и @=? Нет, это не про декораторы. Задуманы эти операторы были для умножения матриц и появились в версии Python 3.5. Однако встроенного типа «матрица» в Python нет, и ни один из встроенных типов эти операторы не реализует. Поэтому, быть может, о нем и не рассказывают на курсах.
Однако оператор @ рекомендуется для умножения матриц в библиотеке numpy:
>>> import numpy as np >>> a = np.array( [ [1, 2], [-2, 3] ] ) >>> b = np.array( [ [3, 0], [1, -3] ] ) >>> a @ b array([[ 5, -6], [-3, -9]]) >>> np.matmul(a, b) array([[ 5, -6], [-3, -9]])
⚠️ Обратите внимание, что это именно np.matmul, а не np.dot!
Также вы можете написать реализацию операторов @ и @= для своих классов. Для этого вам понадобятся магические методы matmul__, __imatmul__, __rmatmul__ . Смотрите пример по ссылке.
Специально для канала @pyway.