آشنایی با عملگرها در زبان برنامه‌نویسی پایتون


پیش از این گفتیم که یکی از مشخصه‌های مشترک تمامی زبان‌های برنامه‌نویسی، انجام اَعمال پردازشی روی داده‌ها است و حال باید ببینیم پردازش روی داده‌ها از چه طریقی انجام خواهد شد. عملیات پردازش روی داده‌ها به واسطهٔ به‌کارگیری عملگرها و توابع پیش‌فرض پایتون امکان‌پذیر است که در این آموزش به معرفی عملگرها پرداخته و در آموزش‌های بعدی توابع را بررسی خواهیم کرد.

به خاطر دارید زمانی که با مفهوم متغیر در زبان برنامه‌نویسی پایتون آشنا شدیم از نماد = برای انتساب یک آبجکت به متغیر مد نظر استفاده کردیم و گفتیم این نماد بیانگر یک Operator (عملگر) است که عملیات انتساب را روی دو  Operand (عملوند) که در سمت چپ و راست آن قرار دارند انجام می‌دهد. علاوه بر نماد = نمادهای دیگری نیز به عنوان عملگر برای مفسر پایتون تعریف شده‌اند که هر یک عملیات خاصی را روی داده‌ها اجرا می‌کنند که در ادامه برای آشنایی با عملگرهای مختلف، به بررسی انواع عملیاتی که آن‌ها انجام می‌دهند خواهیم پرداخت.

اعمال ریاضیاتی (Mathematical Operations)
در فرآیند توسعهٔ نرم‌افزار یکی از پرکاربردترین دیتا تایپ‌ها اعداد هستند و قاعدتاً انجام عملیات مقدماتی ریاضیاتی مانند جمع، تفریق، ضرب و تقسیم روی این نوع داده‌ها به کرات صورت می‌گیرد و از همین روی و برای راحتی کار یکسری عملگر محاسباتی (Arithmetic Operator) برای مفسر پایتون تعریف شده‌اند که تقریباً شبیه به همان نمادهایی هستند که ما در ریاضیات برای انجام این عملیات از آن‌ها استفاده می‌کنیم که در ادامه به معرفی آن‌ها خواهیم پرداخت.

+ برای انجام عملیات جمع (Addition) استفاده می‌شود به این صورت که عملوندهای سمت چپ و راست خود را با هم جمع می‌کند و حاصل عملیات را ریترن می‌کند. مثال‌های زیر را که در حالت تعاملی IDLE اجرا شده‌اند در نظر بگیرید:

>>> 3 + 5
8
>>> 3.0 + 5.0
 8.0
>>> 3j + 5j
8j
>>> 3 + 5.0
8.0

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

شاید این سؤال برای‌تان پیش بیاید که «چرا حاصل جمع این دو عدد به صورت یک عدد صحیح نمایش داده نشده است؟» که در پاسخ به این پرسش می‌توان گفت زمانی که مفسر پایتون به یک عبارت محاسباتی نظیر این مثال برخورد می‌کند، یک سلسله مراتب برای انواع داده‌های عددی آن قائل می‌شود به این صورت که اولویت را به ترتیب به نوع دادهٔ مختلط، اعشاری، صحیح و بولی می‌دهد و از همین روی برای محاسبهٔ جواب، نوع داده‌ای را انتخاب می‌کند که بالاترین اولویت را دارا است و انواع دیگر را به آن دیتا تایپ تبدیل می‌کند. در مثال چهارم هم چون اولویت 5.0 که یک عدد اعشاری است بالاتر از اولویت عدد صحیح 3 است، مفسر پایتون 3 را به صورت عدد صحیح 3.0 در نظر می‌گیرد و آن را با 5.0 جمع می‌کند و حاصل را به صورت یک عدد اعشاری با مقدار 8.0 نمایش می‌دهد.

نکته
قبلاً گفتیم که دیتا تایپ بولی در واقع زیرمجموعه‌ای از اعداد صحیح است که False معادل با مقدار 0 و True معادل با مقدار 1 است و از همین روی انجام عملیات ریاضیاتی روی داده‌های بولی مجاز است به طوری که مثلاً می‌توان حاصل عبارت False + True را که مترادف عبارت 1 + 0 است را به دست آورد که برابر با 1 است.

- برای انجام عملیات تفریق (Subtraction) استفاده می‌شود به این صورت که مقدار عملوند سمت راست را از عملوند سمت چپ کسر می‌کند و حاصل عملیات را ریترین می‌کند:

>>> 5 - 3
2
>>> 1.7 - 3.5
-1.8

لازم به یادآوری است که عملگرهای + و می‌توانند تنها با یک عملوند در سمت راست خود ظاهر شوند که در این صورت عملگر + علامت مثبت یا منفی عملوند خود را تغییر نخواهد داد اما عملگر عملوندی با مقدار مثبت را به منفی و عملوندی با مقدار منفی را به مثبت تغییر می‌دهد:

>>> a = -3
>>> +a
-3
>>> -a
3

* برای انجام عملیات ضرب (Multiplication) استفاده خواهد شد که در ریاضی با نماد × مشخص می‌شود به این صورت که با ضرب عملوندها در دو سمت خود، حاصل عملیات را ریترن می‌کند:

>>> 3 * 5
15
>>> False * True
0
>>> 4 * 0.3
1.2

/ برای انجام عملیات تقسیم (Division) استفاده می‌گردد که در ریاضی با نماد ÷ مشخص می‌شود به این صورت که با تقسیم مقدار عملوند سمت چپ بر مقدار عملوند سمت راست، خارج‌قسمت تقسیم را به عنوان حاصل عملیات ریترن می‌کند که برای درک بهتر این موضوع، مثال‌های زیر را در نظر می‌گیریم:

>>> 4 / 2
2.0
>>> 5 / 3
1.6666666666666667

همان‌طور که مشخص است، مفسر پایتون حاصل تقسیم اعداد صحیح را به صورت اعشاری نمایش می‌دهد در صورتی که در نسخه‌های قبلی پایتون این مقادیر را رُند می‌کرد و حاصل را به صورت یک عدد صحیح نشان می‌داد. در صورتی که بخواهیم خارج‌قسمت را بدون ارقام اعشاری به دست آوریم، می‌توانیم از عملگر // استفاده می‌کنیم که در ادامه بیشتر در مورد کارکرد این عملگر توضیح خواهیم داد.

// برای انجام عملیات تقسیم رُند (Floordiv) استفاده می‌شود بدین صورت که برای تقسیم عملوندهایی که مقدار عددی مثبت هستند، عملوند سمت چپ بر مقدار عملوند سمت راست تقسیم شده و سپس قسمت اعشاری عدد حذف می‌شود و در نهایت حاصل عملیات در خروجی ریترن می‌شود اما اگر چنانچه یکی از عملوندها مقدار عددی منفی باشد، حاصل عملیات رُند شده و در خروجی نمایش داده می‌شود. برای درک بهتر عملکرد این عملگر، به حاصل تقسیم‌های زیر توجه کنید:

>>> 4 // 2
2
>>> 5 // 3
1
>>> -3//2
-2

% برای انجام عملیات محاسبهٔ باقیمانده از یک عبارت تقسیم (Modulo) استفاده می‌شود به این صورت که مقدار عملوند سمت چپ را بر مقدار عملوند سمت راست خود تقسیم می‌کند و باقیماندهٔ تقسیم را ریترن می‌کند. به طور مثال، خروجی کدهای زیر را ببینید:

>>> 5 % 2
1
>>> 4 % 2
0

** برای انجام عملیات به توان رساندن (Exponentiation) استفاده می‌شود. برای مثال، وقتی که می‌خواهیم عدد 2 را 4 بار در خودش ضرب کنیم به جای نوشتن عبارت 2×2×2×2 در ریاضی آن را به اختصار به صورت 24 می‌نویسیم، در زبان پایتون آن را به صورت زیر عملی می‌کنیم:

>>> 2 ** 4
16

همان‌طور که می‌بینید، عملگر ** مقدار عملوند سمت چپ را به توان عملگر سمت راست می‌رساند و مقدار ۱۶ را ریترن می‌کند.

این بخش از محتوا مخصوص کاربرانی است که ثبت‌نام کرده‌اند.
جهت مشاهدهٔ این بخش از محتوا لاگین نمایید.

اعمال مقایسه‌ای (Comparison Operation)
در صنعت توسعهٔ نرم‌افزار مواقع بسیار زیادی برای برنامه‌نویس پیش خواهد آمد که نیاز دارد تا چند چیز را با یکدیگر مقایسه کند که در چنین شرایطی نیازمند عملگرهای مقایسه‌ای هستیم که در ادامه با آن‌ها آشنا خواهیم شد.

== برابری (Equality) عملوندهای سمت چپ و راست خود را بررسی می‌کند و در صورت برابر بودن مقدار True و در غیر این صورت مقدار False را ریترن می‌کند به طوری که در مثال‌های زیر کاربرد این عملگر را می‌بینیم:

>>> 1 == 1
True
>>> 1 == 1.0
True
>>> 1 == 2
False
>>> "a" == "A"
False

همان‌طور که می‌بینید، در حین مقایسه مفسر پایتون ارزش عدد صحیح 1 و عدد اعشاری 1.0 را یکسان در نظر می‌گیرد مضاف بر اینکه می‌بینیم مفسر پایتون بین حروف کوچک و بزرگ تمایز قائل است و در صورتی که یک حرف کوچک را با معادل بزرگ آن مقایسه کنیم، مقدار False را در اختیارمان قرار می‌دهد.

هشدار
یکی از اشتباهاتی که معمولاً برنامه‌نویسان مبتدی انجام می‌دهند این است که از عملگرهای انتساب (=) و برابری (==) به اشتباه به جای هم استفاده می‌کنند. بنابراین شناخت کارکرد هر یک از این عملگرها و نتیجهٔ عملیاتی که آن‌ها انجام می‌دهند در استفادهٔ به‌جا و درست از آن‌ها نقش مهمی دارد.

=! نابرابری یا تمایز (Difference) عملوندهای سمت چپ و راست خود را بررسی می‌کند و بر خلاف عملگر == در صورت برابر بودن مقدار False و در غیر این صورت مقدار True را ریترن می‌کند به طوری که در مثال‌های زیر کاربرد این عملگر را به خوبی می‌بینیم:

>>> 1 != 1
False
>>> 1 != 1.0
False
>>> 1 != 2
True
>>> "a" != "A"
True

> در صورتی که مقدار عملوند سمت چپ کوچک‌تر از مقدار عملوند سمت راست آن باشد مقدار True را باز می‌گرداند و در غیر این صورت مقدار False را ریترن می‌‌کند:

>>> 3 < 7
True
>>> 7 < 3
False

< در صورتی که مقدار عملوند سمت چپ بزرگ‌تر از مقدار عملوند سمت راست آن باشد مقدار True را باز می‌گرداند و در غیر این صورت مقدار False را ریترن می‌کند:

>>> 7 > 3
True
>>> 7 < 3
False

=> در صورتی که مقدار عملوند سمت چپ کوچک‌تر یا مساوی مقدار عملوند سمت راست آن باشد مقدار True را باز می‌گرداند و در غیر این صورت مقدار False را ریترن می‌کند:

>>> 5 <= 5
True
>>> 5 <= 8
True

=< در صورتی که مقدار عملوند سمت چپ بزرگ‌تر یا مساوی مقدار عملوند سمت راست آن باشد مقدار True را ریترن می‌کند و در غیر این صورت مقدار False را باز می‌گرداند:

>>> 5 >= 5
True
>>> 8 >= 5
True
>>> 5 >= 8
False

دقت کنید که در زمان استفاده از عملگرهایی مانند =+، =<، == و چیزهایی از این دست که از دو نماد تشکیل شده‌اند، بین دو نماد از کاراکتر فاصله (اِسپیس) استفاده نکنید چرا که در این صورت با خطای سینتکسی مواجه خواهید شد:

>>> 3 > = 2
SyntaxError: invalid syntax

همان‌طور که در کد بالا مشاهده می‌شود، به دلیل وجود فاصله مابین علامت‌های = و < مفسر پایتون از ما خطای سینتکسی گرفته است.


لیست نظرات
کاربر میهمان
دیدگاه شما چیست؟
کاربر میهمان
ابوالفضل احمدي
ابوالفضل احمديدولوپر آشنا به جاوا و علاقه مند به php
۱۳۹۸/۰۵/۰۱
به نظر میاد کد خط 22 و 23 در قسمت اِعمال انتساب اضافه است
کاربر میهمان
Davood.ERF@yahoo.comمن یک کاربر مهمان هستم
۱۳۹۸/۰۲/۱۴
دستتون درد نکنه ... کامل بود /
alien
alien
۱۳۹۷/۰۵/۱۳
گفتید که عملگر // خارج قسمت گرد شده را به عنوان حاصل عملیات برمی گرداند. ولی اگه عدد ۱.۶۶۶۶۶ رو گرد کنیم میشه ۲
در صورتی که حاصل ۳ // ۵ برابر با یک شد.
کاربر میهمان
کاربر میهمانمن یک کاربر مهمان هستم
۱۳۹۷/۰۴/۱۲
بسیار عالی
sh.masumi79
sh.masumi79
۱۳۹۶/۰۹/۱۷
خیلی خوب و خسته نباشید
کاربر میهمان
aminمن یک کاربر مهمان هستم
۱۳۹۵/۰۷/۲۳
پرفکت.......
مستر
مستر یک ایدوئولوژی گر وابسته به برنامه نویسی
۱۳۹۵/۰۶/۲۲
عاااااااااااالیه آموزشاتون :) ممنون
mortaza
mortaza
۱۳۹۵/۰۴/۱۹
عملگر ها مثل عملگر های php هستند فقط اینکه پی اچ پی عملیات ضرب برای دنباله ها رو نداره و بجاش میشه از توابع تعریف شده در اون استفاده کرد
aherehef
aherehef
۱۳۹۵/۰۴/۱۸
3a + 4a
SyntaxError: invalid syntax
naiem
naiem
۱۳۹۵/۰۱/۱۳
واقعا خسته نباشید