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


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

به خاطر دارید زمانی که با مفهوم متغیر در زبان برنامه نویسی پایتون آشنا شدیم از نماد = برای انتساب آبجکت به متغیر استفاده کردیم و گفتیم این نماد بیانگر یک 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

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

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

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

% : از این عملگر برای انجام عملیات باقی مانده گیری از یک عبارت تقسیم -Modulo- استفاده می شود؛ به این صورت که مقدار عملوند سمت چپ را بر مقدار عملوند سمت راست خود تقسیم می‌کند و باقی‌ مانده ی تقسیم را برمی‌گرداند. به طور مثال خروجی کدهای زیر را ببینید:

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

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

>>> 2 ** 4
16

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

۲- اعمال دنباله ای (Sequence Operation):
نوع داده ی استرینگ یکی از انواع داده های دنباله ای در زبان پایتون است که در آینده در مورد آن ها بیش تر خواهیم آموخت. اکنون می خواهیم به بررسی بعضی از عملگرهایی که روی دنباله ها به ویژه نوع استرینگ عمل می کنند بپردازیم.

+ : از این عملگر برای پیوند دنباله ها استفاده می شود. به طور مثال کدهای زیر را در نظر بگیرید:

>>> "Sokan" + "Academy" + "." + "com"
'SokanAcademy.com' 
>>> first_name = "Narges"
>>> space = " "
>>> last_name = "Asadi"
>>> teacher_name = first_name + space + last_name
>>> teacher_name
'Narges Asadi'

همان طور که می بینید در مثال اول با استفاده از عملگر + چهار رشته ی "Sokan" و "Academy" و  "." و "com" به هم پیوند می خورند و خروجی آن یک استرینگ با مقدار "SokanAcademy.com" است. در مثال دوم هم مقدار سه متغیر first_name، space، و last_name با استفاده از عملگر + به هم پیوند می خورند و حاصل آن در متغیر teacher_name ذخیره می شود. البته برای پیوند استرینگ ها می توان آن ها را بدون استفاده از عملگر + تنها در کنار هم قرار داد. برای مثال کد زیر را در نظر بگیرید:

 >>> "Sokan" "Academy" "." "com"
'SokanAcademy.com'

دقت کنید که نمی توان متغیرها را به این صورت بدون استفاده از عملگر + در کنار هم قرار داد. برای مثال به کد زیر توجه کنید که چگونه با قرار دادن متغیرها در کنار هم بدون استفاده از عملگر + مفسر اعلام خطا می کند:

>>> teacher_name = first_name  space  last_name
SyntaxError: invalid syntax

*: از این عملگر برای تکرار دنباله ها استفاده می شود. به طور مثال کد زیر را در نظر بگیرید:

>>> "db" * 5
'dbdbdbdbdb'
>>> 5 * "db"
'dbdbdbdbdb'

همان طور که می بینید عملگر * داده ی استرینگی را که در یک طرف آن قرار دارد (و مهم هم نیست که در کدام طرف باشد) به تعداد عملوندی که در سمت دیگر آن با مقدار صحیح قرار دارد تکرار می کند. اگر مقدار این عدد صحیح 0 یا یک عدد منفی باشد خروجی نهایی استرینگی تهی خواهد بود.

>>> "db" * -1
''
>>> "db" * 0
''

۳- اعمال انتساب یا جایگزینی (Assignment Operation):
پیش از این با عملگر انتساب که با نماد = مشخص می شد آشنا شدیم و دیدیم که این عملگر چگونه عملوند سمت راست خود که می تواند حاصل یک عبارت نیز باشد را به عملگر سمت چپ منتسب می کند. هم چنین با شیوه ی انتساب های چند گانه نیز آشنا شدیم. مثال های زیر نمونه هایی از کاربرد عملگر انتساب هستند:

>>> a , b , c = 1 , 2 , 3
>>> d = a + b + c

زمانی که با متغیرها کار می کنیم می توانیم عملگر انتساب را با سایر عملگرهای +، -، *، /، //، %، و ** ترکیب کنیم تا مفسر پایتون عملیات جدیدی را به این صورت اجرا کند که ابتدا بدون در نظر گرفتن عملگر = عملگر دیگر را روی عملوندهای سمت چپ و راست اثر دهد، آن گاه حاصل عملیات را به عملوند سمت چپ که یک متغیر است منتسب کند. برای مثال دستورات زیر را ببینید:

>>> a = 8
>>> b = 5
>>> a += 1
>>> a
9
>>> a -= 2
>>> a
7
>>> a /= b
>>> a
1.4
>>> a = 8
>>> a %= b
>>> a
3
>>> b //= 2
>>> b
2
>>> b **= b
>>> b
4
>>> a  =  "a"
>>>b 
>>> a = "a"
>>> b = "b"
>>> a += b
>>> a
'ab'
>>> a *= 4
>>> a
'abababab'

۴- اعمال مقایسه ای (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
هشدار
دقت کنید که در زمان استفاده از عملگرهایی مانند =+، =<، ==، و ... که از دو نماد تشکیل شده اند بین دو نماد آن ها از کاراکتر فاصله یا Space استفاده نکنید، چون در صورت عدم رعایت این شرط با خطای سینتکسی برخورد می کنید:
>>> 3 > = 2
SyntaxError: invalid syntax

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

به غیر از موارد اشاره شده عملگرهای دیگری هم وجود دارند که در آموزش های بعدی به تدریج با آن ها آشنا خواهیم شد. در این آموزش با بعضی از عملگرها و تأثیر آن ها بر اشیاء آشنا شدیم. در زمان کدنویسی برنامه ها استفاده زیادی از انواع عملگرها خواهیم کرد، بنابراین شما به مرور در به کارگیری آن ها مسلط خواهید شد. برای تمرین بیش تر می توانید با استفاده از انواع دادهای عددی و استرینگ ها و عملگرهایی که با آن ها آشنا شدید عبارت هایی را در پنجره ی تعاملی IDLE وارد کنید تا خروجی آن ها را ببینید و سعی کنید با توجه به نکات توضیح داده شده برای خودتان تحلیل کنید که چرا به چنین نتایجی رسیده اید.

لیست نظرات
کاربر میهمان
دیدگاه شما چیست؟
کاربر میهمان
alien
alien
گفتید که عملگر // خارج قسمت گرد شده را به عنوان حاصل عملیات برمی گرداند. ولی اگه عدد ۱.۶۶۶۶۶ رو گرد کنیم میشه ۲
در صورتی که حاصل ۳ // ۵ برابر با یک شد.
کاربر میهمان
کاربر میهمانمن یک کاربر مهمان هستم
بسیار عالی
sh.masumi79
sh.masumi79
خیلی خوب و خسته نباشید
reza.ag
reza.ag
سلام
تیتر عملگرهای بزرگتر و کوچکتر رو جابجا نوشتید.
کاربر میهمان
aminمن یک کاربر مهمان هستم
پرفکت.......
مستر
مستر یک ایدوئولوژی گر وابسته به برنامه نویسی
عاااااااااااالیه آموزشاتون :) ممنون
mortaza
mortaza
عملگر ها مثل عملگر های php هستند فقط اینکه پی اچ پی عملیات ضرب برای دنباله ها رو نداره و بجاش میشه از توابع تعریف شده در اون استفاده کرد
aherehef
aherehef
3a + 4a
SyntaxError: invalid syntax
aherehef
aherehef
سلام .علت این خطا رو نمیدونم
>>> 4l+l
SyntaxError: invalid syntax
>>> 4l+1l
SyntaxError: invalid syntax
>>> 4L +3l
SyntaxError: invalid syntax
>>> 3J + 6j
9j
>>> 4L + 5l
SyntaxError: invalid syntax
>>> 4R + 5R
SyntaxError: invalid syntax
>>> 4a + 3a
SyntaxError: invalid syntax
>>> 4j + 5j
9j
>>> 3a + 4a
SyntaxError: invalid syntax
ehs
ehs
ببخشید من چطوری میتونم int و str رو باهم نشون بدم؟؟
برای مثال Number = 5