TGViewer
PyCoders (پایتون) PyCoders (پایتون) @python_rd · 4.1K subscribers
Post #2158 549
🔆 تا حالا دیدی توی پایتون از علامت @ بین دو تا متغیر استفاده بشه؟!

🔹وقتی صحبت از @ توی پایتون می‌شه، ۹۹٪ افراد یاد 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
  • ❤ 1
More from @python_rd
  1. Oct 13, 2026کوییز پایتون 🔆 خروجی اجرای کد زیر چیست؟ t = (1, 2, [3, 4]) try: t[2] += [5] except TypeEr…
  2. Oct 13, 2026🔆 راز مکانیزم پیاده‌سازی و تغییر جهت NaN در الگوریتم مرتب‌سازی پایتون (Timsort) 🔹 باگ ری…
  3. Oct 13, 2026🔆 حذف تاریخی GIL از پایتون (Free-threaded Python) 🔹 یک رویداد تاریخی: حذف قفل مفسر (GIL)…
  4. Oct 11, 2026🔆 مدیریت تمیز منابع با Context Managerهای سفارشی (contextlib) 🔹 ساخت Context Managerها م…
  5. Oct 10, 2026🔆 چرا برای داده‌های حجیم نباید از return استفاده کنی؟ 🔹 وقتی یک تابع لیست بزرگی از داده‌…
  6. Oct 10, 2026🔆 خروجی این تکه کد چیه؟ def add_item(item, lst=[]): lst.append(item) return lst print(add…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →