عملگرها؛ دکمه‌های جادویی که به کدت جان می‌دهن
برنامه‌نویسی بدون عملگر مثل یه ماشین بدون فرمانه. می‌تونی چراغ‌هاشو روشن کنی، بوق بزنی، ولی از جات تکون نمی‌خوری. عملگرها اون دکمه‌های کوچیک و گاهی نامرئی‌ای هستن که به پایتون می‌گن «داده‌ها رو بچرخون، مقایسه کن، جمع بزن، تقسیم کن، و تصمیم بگیر». توی این مقاله قراره با هم بریم توی شهربازی عملگرها، از ترن هوایی ریاضی گرفته تا چرخ‌وفلک منطق، و ببینیم چطور با چندتا علامت ساده می‌تونیم برنامه رو از یه موجود ساکن تبدیل به یه موجود زنده و حسابگر کنیم. کمربنداتو ببند که می‌خوایم عملگرها رو خفن و خودمونی تشریح کنیم.

عملگر چیه و چرا اینقدر مهمه؟
به زبون ساده، عملگر یه علامت یا کلمه‌ی کلیدیه که میاد و یه کاری روش داده‌ها انجام می‌ده. مثل همون چاقوی سوئیسی‌ که هر تیغه‌اش یه کار خاص می‌کنه. پایتون بدون اینکه نق بزنه، با چندتا کاراکتر ساده محاسبات سنگین رو انجام می‌ده، مقادیر رو با هم مقایسه می‌کنه و بهت می‌گه «بله» یا «نه».

ما چهارتا خانوادهٔ بزرگ عملگر داریم که هر روز ازشون استفاده می‌کنیم:

محاسبه‌گرها (Arithmetic) – همون ریاضی خودمون.

مقایسه‌چی‌ها (Comparison) – می‌گن کی از کی بزرگ‌تره، کی برابره.

منطق‌بازها (Logical) – با «و»، «یا» و «نه» شرط‌ها رو ترکیب می‌کنن.

انتساب‌دهنده‌ها (Assignment) – یه تیر و دو نشون، هم حساب می‌کنن هم ذخیره.

بریم که تک‌تکشون رو مثل نقل و نبات براتون باز کنم.

۱. عملگرهای ریاضی – حساب کتاب با کلاس
وقتی دلت می‌خواد جمع و تفریق کنی، اینا آماده‌ان. مثل معلم ریاضی مهربون که هیچ‌وقت اشتباه نمی‌کنه، مگه اینکه تو ورودی اشتباه بدی.

تصویر

نکتهٔ خفن: تقسیم معمولی (/) همیشه یه float تحویلت می‌ده، حتی اگه دو عدد بر هم بخش‌پذیر باشن. مثلاً 4 / 2 می‌شه 2.0. ولی // مثل پدربزرگ قدیمیه، اعشار رو قیچی می‌کنه و فقط عدد صحیح رو نگه می‌داره. مراقب باش، گرد نمی‌کنه، کف رو برمی‌داره! (یعنی 7 // 3 می‌شه 2، نه 3).

باقی‌مانده (%) کجا به درد می‌خوره؟ می‌خوای ببینی عددی زوجه یا فرد؟ کافیه number % 2 رو چک کنی. اگه 0 شد زوجه، اگه 1 شد فرد. به همین راحتی!

۲. عملگرهای مقایسه‌ای – قاضی‌های دوست‌داشتنی
این عملگرها همیشه راست یا دروغ (True یا False) می‌گن. هیچ وقت شک نمی‌کنن. مثل داور فوتبال که فقط یه نتیجه اعلام می‌کنه: آفساید بود یا نبود.

تصویر

دقت کن: یه مساوی (=) یعنی «بذار مقدار رو توی متغیر» (انتساب)، دو مساوی (==) یعنی «آیا این دو با هم برابرن؟». اینو قاطی کنی، پایتون اذیت نمی‌کنی ولی منطق کدت می‌پره هوا. هر وقت خواستی بپرسی «برابره؟»، دو تا مساوی بذار.

مقایسهٔ رشته‌ها هم ممکنه: پایتون حروف رو بر اساس جدول یونیکد مقایسه می‌کنه. "apple" < "banana" برمی‌گردونه True چون 'a' از 'b' کوچک‌تره. می‌تونی مثلاً بررسی کنی که اسم کاربر با حروف الفبا جلوتره یا نه.

۳. عملگرهای منطقی – مغز متفکر شرط‌های پیچیده
وقتی چندتا شرط رو می‌خوای با هم ترکیب کنی، این سه تا کلمهٔ جادویی وارد عمل می‌شن. مثل چسب دوقلو که قطعات شرط رو می‌چسبونن.

and : هر دو طرف باید True باشن تا نتیجه True بشه. مثل ورود به پارک که هم بلیط می‌خواد هم قدت بالای ۱۲۰ باشه.

or : کافیه حداقل یکی True باشه تا نتیجه True بشه. مثل اینکه یا با بلیط بیای یا با کارت شناسایی خاص.

not : نتیجه رو برعکس می‌کنه. True رو می‌کنه False و بالعکس. مثل دکمهٔ «برعکس» توی آینه.


age = 22
has_id = True

# فقط وقتی هر دو شرط درسته اجازه بده
if age >= 18 and has_id:
    print("می‌تونی وارد باشگاه بشی 🕺")

# اگه پول نقد داری یا کارت اعتباری
cash = False
credit_card = True
if cash or credit_card:
    print("پرداخت موفق! 💳")

# برعکس کردن یه شرط
is_raining = False
if not is_raining:
    print("بدون چتر برو بیرون! ☀️")


ترفند خفن: ارزیابی اتصال کوتاه (Short-circuit evaluation). پایتون باهوشه. وقتی از and استفاده می‌کنی، اگه طرف چپ False باشه، دیگه طرف راست رو اصلاً چک نمی‌کنه (چون می‌دونه حاصل قطعاً False می‌شه). توی or هم اگه طرف چپ True باشه، کار تمومه. این موضوع رو می‌تونی دستاویز کنی برای جلوگیری از خطا، مثلاً:


name = "پایتون"
if len(name) > 0 and name[0] == "پ":
    print("اسمت با پ شروع می‌شه")
# اگه name خالی بود، len(name)>0 خودش False می‌شد و name[0] اجرا نمی‌شد تا IndexError بگیری.


۴. عملگرهای انتساب – دم‌دستی و یک‌خطی
این عملگرها یه حرکت دوپا انجام می‌دن: هم حساب می‌کنن، هم حاصل رو می‌ریزن توی متغیر. مثل این که بگی «فلان متغیر رو بکن مساوی خودش به اضافهٔ ۵» ولی خلاصه و شیک.

تصویر

کاربرد واقعی: وقتی یه شمارنده داری و می‌خوای توی حلقه هر بار یکی اضافه‌اش کنی، به جای counter = counter + 1 می‌نویسی counter += 1. خیلی خفن‌تر و حرفه‌ای‌تره.

۵. (پاداش خفن) عملگرهای عضویت و هویت
حالا که گرم شدیم، دو تا دیگه که به شدت خوشمزه‌ان:

in و not in : چک می‌کنن که یه مقدار توی یه مجموعه (مثل لیست، رشته، دیکشنری) هست یا نه. مثل اینه که بپرسی «آیا شیر تو یخچاله؟»

is و is not : مقایسهٔ هویت می‌کنن، یعنی می‌گن آیا این دو متغیر دقیقاً به یک شیء توی حافظه اشاره می‌کنن یا نه. (با == که مقایسهٔ مقداریه فرق داره!)


# عضویت
vowels = "aeiou"
if "e" in vowels:
    print("e یه حرف صداداره")

groceries = ["نان", "پنیر", "هندوانه"]
if "هندوانه" in groceries:
    print("هندوانه بخریم!")

# هویت
a = [1, 2, 3]
b = a
c = [1, 2, 3]
print(a is b)   # True (b دقیقاً همون برچسب a رو داره)
print(a is c)   # False (c یه لیست جدیده با همون محتوا)
print(a == c)   # True (مقدارشون یکسانه)


اینا رو بعداً تو ساختمان‌های داده حسابی باهاشون خوش می‌گذرونی.

یک نمایش باحال از همهٔ عملگرها در یک برنامهٔ واقعی
بیایم یه ماشین حساب سادهٔ شرطی بنویسیم که همهٔ عملگرها رو یک‌جا به رخ بکشه:


# عملگرها در عملیات واقعی
wallet = 20000  # پول کیف
price = 5000    # قیمت یه جنس
quantity = int(input("چندتا می‌خوای؟ "))

total = price * quantity           # عملگر ریاضی *
discount = total * 0.1 if total > 20000 else 0   # عملگر > و عبارت شرطی
final = total - discount           # عملگر -

can_buy = wallet >= final          # عملگر مقایسه >=
has_enough_money = wallet >= total
has_discount = total > 20000

if has_enough_money and not has_discount:   # and و not
    print("پول داری، ولی تخفیف نداری، همون قیمت اصلی پرداخت کن.")
elif has_discount and wallet >= final:
    print(f"تخفیف خوردی! مبلغ قابل پرداخت: {final} تومان")
    wallet -= final                # عملگر انتساب -=
elif not has_enough_money and wallet < final:
    print("حیف، پولت کافی نیست.")

print(f"پول باقی‌مانده: {wallet}")


اینجا همه با هم کار می‌کنن: محاسبه، مقایسه، منطق، و انتساب. انگار یه ارکستر سمفونیک عملگرهاست.

جمع‌بندی: عملگرها دوستای صمیمی تو هستن
شاید اولش فکر کنی این علامت‌ها بچه‌بازی‌ان، ولی وقتی عمیق بشی می‌فهمی که ستون فقرات هر برنامه‌ای عملگرها هستن. پایتون با عملگرهای ساده و سرراستش باعث می‌شه منطق کدت به زبان طبیعی نزدیک‌تر بشه. وقتی می‌نویسی if age >= 18 and has_ticket: عملاً داری جمله می‌سازی، نه فقط کد. این سادگی، قدرت واقعی پایتونه.

پس دفعهٔ بعد که خواستی دو عدد رو جمع کنی، تساوی رو چک کنی، یا شرط‌های عجیب و غریب رو ترکیب کنی، یادت باشه که عملگرها مثل پیچ‌گوشتی‌های چندکاره توی جیب برنامه‌نویسن. با اینا کدت رو جوری شیوا و روان می‌نویسی که انگار داری با پایتون گپ می‌زنی. حالا برو بترکون! 🐍💥