🔹وقتی صحبت از @ توی پایتون میشه، ۹۹٪ افراد یاد Decorator ها میافتن. اما پایتون ۳.۵ به بعد، یک عملگر اختصاصی برای ضرب ماتریسها اضافه کرد که دقیقاً همین شکله
🔹داستان چیه؟
توی ریاضیات و یادگیری ماشین، ضرب معمولی (درایهبهدرایه) با ضرب ماتریسی فرق داره.
* 👈 ضرب درایهای (Element-wise)
@ 👈 ضرب ماتریسی (Matrix Multiplication)
🔹 کد نمونه با کتابخانه NumPy:
import numpy as np
A = np.array([[1, 2],
[3, 4]])
B = np.array([[5, 6],
[7, 8]])
# ضرب درایهای (معمولی)
print(A * B)
# [[ 5 12]
# [21 32]]
# ضرب ماتریسی با عملگر @
print(A @ B)
# [[19 22]
# [43 50]]
🔹 نکته: خودت هم میتونی پیادهسازیش کنی!
پایتون برای این عملگر یک متد جادویی (Magic Method) به اسم matmul داره. یعنی میتونی توی کلاسهای شخصی خودت هم تعریفش کنی:
class Matrix:
def __init__(self, data):
self.data = data
def __matmul__(self, other):
# اینجا منطق ضرب ماتریس رو مینویسی
print("ضرب ماتریسی اجرا شد!")
m1 = Matrix([1, 2])
m2 = Matrix([3, 4])
m1 @ m2 # خروجی: ضرب ماتریسی اجرا شد!
🐍 @python_rd