در این بلاگ، به بررسی عملگرها (operator) و عبارتها ( Expression ) در پایتون میپردازیم که یکی از مفاهیم پایهای و مهم در برنامهنویسی است. عملگرها ابزارهایی هستند که به کمک آنها میتوانیم عملیات مختلفی مانند جمع، تفریق، ضرب، تقسیم و مقایسه را بر روی دادهها انجام دهیم. شناخت و استفادهی صحیح از عملگرها میتواند به درک بهتر و تسلط بیشتر بر کدهای پایتون کمک کند. در ادامه، انواع مختلف عملگرها و کاربردهای آنها را بررسی خواهیم کرد و سپس به تشریح مفهوم عبارتها (Expression) و نحوهی محاسبهی آن خواهیم پرداخت.
عملگر چیست ؟
عملگرها ( Operators ) در پایتون به نمادها و کلماتی گفته میشود که اعمال خاصی را روی دادهها و متغیرها انجام میدهند. برای مثال، عملگر “+” برای جمع دو عدد استفاده میشود. به مثالهای زیر توجه کنید:
a = 5
b = 3
result = a + b
print(result)
در مثال فوق، متغیر a
مقدار ۵ و متغیر b
مقدار ۳ را ذخیره میکنند. عملگر “+” بین این دو متغیر قرار گرفته و وظیفهاش جمع کردن مقادیر آنهاست. نتیجه این عمل جمع در متغیر result
ذخیره میشود و سپس با استفاده از print(result)
، نتیجه یعنی ۸ چاپ میشود. عملگرها انواع مختلفی دارند مانند عملگرهای ریاضی، مقایسهای، منطقی و غیره که هرکدام وظایف خاصی دارند.
به مثال بعدی در مورد عملگر ضرب توجه کنید :
a = 4
b = 5
result = a * b
print(result)
عملگر ضرب برای ضرب دو عدد استفاده میشود و عدد ۲۰ بهعنوان خروجی چاپ میشود.
دسته بندی انواع عملگر
همانطور که در جدول فوق مشاهده میکنید، عملگرهای پایتون را میتوان به ۱۰ دسته تقسیم نمود که این دستهها عبارتند از:
1- عملگرهای محاسباتی ( Arithmetic )
2- عملگرهای تخصیص ( Assignment )
3- عملگرهای منفی یکانی ( Unary minus )
4- عملگرهای رابطهای ( Relational )
5- عملگرهای منطقی ( Logical )
6- عملگرهای بولی ( Boolean )
7- عملگرهای بیتی ( Bitwise )
8- عملگرهای عضویت ( Membership )
9- عملگرهای همانی ( Identity )
10- عملگرهای ویژه ( Special )
این دستهبندیها به شما کمک میکنند تا با انواع مختلف عملگرها در پایتون آشنا شوید و بدانید که هر عملگر چه کاربردی دارد و چگونه میتوان از آنها در برنامههای خود استفاده کرد. در جدول زیر تمام انواع عملگرها به همراه کاربرد و یک مثال از نحوهی استفاده از آنها شرح داده شده است.
عملگرهای محاسباتی
- جمع (+): دو عدد را با هم جمع میکند.
- تفریق (-): یک عدد را از عدد دیگر کم میکند.
- ضرب (*): دو عدد را در هم ضرب میکند.
- تقسیم (/): یک عدد را بر عدد دیگر تقسیم میکند و نتیجه را به صورت اعشاری برمیگرداند.
- تقسیم صحیح (//): یک عدد را بر عدد دیگر تقسیم میکند و نتیجه را به صورت صحیح (بدون اعشار) برمیگرداند.
- توان ()**: یک عدد را به توان عدد دیگر میرساند.
- باقیمانده تقسیم (%): باقیمانده تقسیم دو عدد را برمیگرداند.
در مثالهای زیر نحوه استفاده از عملگرهای محاسباتی شرح داده شده است :
ردیف | نام عملگر | کد | خروجی | شرح خروجی |
1 | جمع (+) | a = 10 b = 5 result = a + b | 15 | جمع دو عدد 10 و 5 برابر 15 میباشد. |
2 | تفریق (-) | a = 10 b = 5 result = a – b | 5 | تفریق دو عدد 10 و 5 برابر 5 میباشد. |
3 | ضرب (*) | a = 10 b = 5 result = a * b | 50 | ضرب دو عدد 10 و 5 برابر 50 میباشد. |
4 | تقسیم (/) | a = 10 b = 5 result = a / b | 2.0 | تقسیم دو عدد 10 و 5 برابر 2.0 میباشد. |
5 | تقسیم صحیح (//) | a = 10 b = 3 result = a // b | 3 | تقسیم صحیح دو عدد 10 و 3 برابر 3 میباشد. |
6 | باقیمانده تقسیم (%) | a = 10 b = 3 result = a % b | 1 | باقیمانده تقسیم دو عدد 10 و 3 برابر 1 میباشد. |
7 | توان (**) | a = 2 b = 3 result = a ** b | 8 | توان دو عدد 2 و 3 برابر 8 میباشد. |
عملگرهای انتساب
عملگرهای انتساب در پایتون برای تخصیص مقادیر به متغیرها استفاده میشوند. این عملگرها علاوه بر تخصیص ساده، میتوانند ترکیبی از عملگرهای ریاضی و انتساب باشند. به عبارت دیگر، آنها به ما امکان میدهند که عملیاتهای ریاضی را انجام دهیم و نتیجه را به همان متغیر اختصاص دهیم. برخی از عملگرهای انتساب عبارتند از =، +=، -=، *=، /=، //=، %=، و **=.
مثال 1: عملگر =+
این عملگر مقدار سمت راست را به متغیر اضافه کرده و نتیجه را به همان متغیر اختصاص میدهد.
x = 5
x += 3 # معادل با x = x + 3
print(x)
مثال 2: عملگر =*
این عملگر مقدار سمت راست را در متغیر ضرب کرده و نتیجه را به همان متغیر اختصاص میدهد.
y = 4
y *= 2 # معادل با y = y * 2
print(y)
عملگرمنفی تکعملوندی
عملگر منفی تکعملوندی (unary minus) در پایتون برای تغییر علامت عددی به کار میرود. این عملگر بهتنهایی بر روی یک عدد یا متغیر عددی اعمال میشود و علامت آن را معکوس میکند؛ بهعبارتدیگر، عدد مثبت را به منفی و عدد منفی را به مثبت تبدیل میکند.
مثال:
در این مثال، متغیر a
مقدار مثبت ۵ دارد و با استفاده از عملگر -
(unary minus)، علامت آن تغییر داده میشود و به -۵ تبدیل میگردد. سپس یک عدد منفی به متغیر b
اختصاص داده شده و دوباره با استفاده از عملگر -
، علامت آن به مثبت تغییر میکند.
ردیف | نام عملگر | کد | خروجی | شرح خروجی |
1 | تغییر علامت به منفی | a = 5 negative_a = -a | -5 | عدد مثبت 5 به منفی 5 تغییر میکند. |
2 | تغییر علامت به مثبت | b = -10 positive_b = -b | 10 | عدد منفی 10 به مثبت 10 تغییر میکند. |
عملگرهای منطقی
عملگرهای منطقی (Logical Operators) برای ترکیب و ارزیابی شروط بولی استفاده میشوند و نتیجهی آنها یک مقدار بولی (True یا False) است. این عملگرها شامل and
، or
و not
هستند. عملگر and
زمانی True برمیگرداند که هر دو شرط True باشند؛ عملگر or
زمانی True برمیگرداند که حداقل یکی از شروط True باشد؛ و عملگر not
نتیجهی شرط را معکوس میکند، یعنی True را به False و False را به True تبدیل میکند. این عملگرها بهطور گستردهای در ساختارهای کنترلی مانند دستورات if
و while
برای ایجاد منطق پیچیدهتر استفاده میشوند.
عملگرهای رابطهای
عملگرهای رابطهای (Relational Operators) برای مقایسهی دو مقدار استفاده میشوند و نتیجهی آنها یک مقدار بولی (True یا False) است. این عملگرها شامل ==
(برابر است با)، !=
(مساوی نیست با)، >
(بزرگتر از)، <
(کوچکتر از)، >=
(بزرگتر یا مساوی)، و <=
(کوچکتر یا مساوی) میباشند. این عملگرها به ما امکان میدهند که روابط بین مقادیر مختلف را بررسی کنیم. برای مثال، میتوانیم بررسی کنیم که آیا دو مقدار برابر هستند یا اینکه یکی از دیگری بزرگتر یا کوچکتر است. این عملگرها معمولاً در دستورات شرطی مانند if
و while
استفاده میشوند.
عملگرهای بیتی
عملگرهای بیتی (Bitwise Operators) برای انجام عملیات سطح پایین بر روی اعداد در سطح بیت استفاده میشوند. این عملگرها شامل AND
(&)، OR
(|)، XOR
(^)، NOT
(~)، شیفت چپ (<<)، و شیفت راست (>>) هستند. عملگرهای بیتی به شما امکان میدهند که بیتهای یک عدد را مستقیماً دستکاری کنید. برای مثال، عملگر &
هر بیت از دو عدد را مقایسه کرده و اگر هر دو بیت 1 باشند، نتیجه 1 خواهد بود. این عملگرها در برنامههای سطح پایین و بهینهسازیهای خاص بسیار کاربرد دارند.
مقایسه عملگرهای منطقی ، بیتی و بولی
عملگرهای منطقی برای ترکیب شروط بولی و ایجاد منطق پیچیدهتر استفاده میشوند و معمولاً در دستورات شرطی به کار میروند. عملگرهای رابطهای برای مقایسهی دو مقدار استفاده شده و نتیجهی مقایسه را بهصورت بولی برمیگردانند. این عملگرها نیز در دستورات شرطی کاربرد دارند. عملگرهای بیتی برای عملیات بر روی بیتهای اعداد استفاده میشوند و بهطور مستقیم بر روی بیتها عمل میکنند که برای برنامههای سطح پایین و بهینهسازیهای خاص مفید هستند. در مجموع، هر سه نوع عملگر برای کنترل جریان برنامه و ایجاد منطق موردنیاز هستند، اما در سطوح مختلفی از جزئیات و کاربرد استفاده میشوند.
برای درک بهتر تفاوت این سه دسته از عملگرها و همچنین کاربرد آنها، مثالهای جدول زیر را بررسی کنید.
ردیف | نوع عملگر | نام عملگر | مقداردهی اولیه و اجرا | نتیجه و توضیحات |
1 | عملگر منطقی | AND | a = True b = False result = a and b | result = False. زیرا b مقدار False دارد و عملگر AND تنها زمانی True میشود که هر دو مقدار True باشند. |
2 | عملگر رابطهای | بزرگتر از | x = 10 y = 5 result = x > y | result = True. زیرا x بزرگتر از y است. |
3 | عملگر بیتی | AND بیتی | m = 5 # 0b0101 n = 3 # 0b0011 result = m & n | result = 1. زیرا عملگر AND بیتی بر روی بیتهای m و n اعمال شده و تنها بیت مشترک در حالت 1 باقی میماند. |
تقدم عملگرها
فرض کنید عبارت زیر را داریم:
a = 4
b = 6
c = 2
e = a + b / c
حاصل عبارت فوق چند است؟ ۷ یا ۵؟
برای پاسخ به این سوال، باید مفهوم تقدم عملگرها ( Operator Precedence ) را در پایتون درک کنیم. در پایتون، هر عملگر دارای اولویتی است که تعیین میکند کدام عملگر زودتر اجرا شود. عملگرهای با اولویت بالاتر پیش از عملگرهای با اولویت پایینتر اجرا میشوند.
در اینجا عملگر / (تقسیم) اولویت بالاتری نسبت به عملگر + (جمع) دارد. بنابراین، ابتدا تقسیم انجام میشود:
b / c = 6 / 2 = 3
سپس نتیجه تقسیم با a جمع میشود:
e = a + 3 = 4 + 3 = 7
بنابراین، حاصل عبارت فوق ۷ است، نه ۵.
چند مثال دیگر:
مثال اول :
x = 9
y = 4
z = 2
result = x - y * z
در این مثال، عملگر *
(ضرب) اولویت بالاتری نسبت به -
(تفریق) دارد. بنابراین، ابتدا ضرب انجام میشود که حاصل ضرب می شود 8.
سپس نتیجه ضرب از x
کم میشود:
result = x - 8 = 9 - 8 = 1
مثال دوم:
p = 5
q = 3
r = 2
result = p + q * r
در این مثال، عملگر * (ضرب) اولویت بالاتری نسبت به + (جمع) دارد. بنابراین، ابتدا ضرب انجام میشود:
q * r = 3 * 2 = 6
سپس نتیجه ضرب با p جمع میشود:
result = p + 6 = 5 + 6 = 11
ترتیب ارزیابی عملگرها در عبارتها
تقدم عملگرها مشخص میکند که کدام عملگر ابتدا اجرا شود، اما ترتیب ارزیابی
( Associativity )
مشخص میکند که اگر چند عملگر با تقدم یکسان در یک عبارت باشند، از چپ به راست (Left to Right – LR) یا از راست به چپ (Right to Left – RL) ارزیابی شوند.
بیشتر عملگرهای ریاضی مانند +, -, *, / ترتیبی چپ به راست (LR) دارند. به عنوان مثال:
result = 10 - 2 - 1
print(result)
اینجا ابتدا عدد 2 از 10 کسر میشود و سپس نتیجه با 1- جمع میشود:
result = 8 - 1
print(result)
اما عملگرهای توان (**) ترتیبی راست به چپ (RL) دارند. به عنوان مثال:
result = 4 ** 3 ** 2
print(result)
اینجا ابتدا 2 به توان 3 انجام میشود و سپس نتیجه به توان 9 میرسد:
result = 2 ** 9
print(result)
با درک تقدم و ترتیب ارزیابی عملگرها، میتوان به درستی عبارات پیچیده ریاضی را در پایتون حل کرد.
برای تسلط بیشتر به مفهوم تقدم عملگرها در پایتون ، اجازه دهید یک مثال دیگر را ذکر کنیم :
# درخواست دمای سلسیوس از کاربر
celsius_input = input("Please enter the temperature in Celsius: ")
# تبدیل ورودی به عدد اعشاری
celsius_temperature = float(celsius_input)
# تبدیل دما به فارنهایت
fahrenheit_temperature = (celsius_temperature * 9/5) + 32
# نمایش دمای تبدیل شده
print("The temperature in Fahrenheit is:", fahrenheit_temperature)
توضیحات کد:
- درخواست دمای سلسیوس از کاربر:
- با استفاده از دستور
input
، دمای سلسیوس از کاربر درخواست میشود و به صورت رشته (متن) ذخیره میشود. celsius_input
متغیری است که مقدار وارد شده توسط کاربر را نگهداری میکند.
- با استفاده از دستور
- تبدیل ورودی به عدد اعشاری:
- مقدار ورودی که به صورت رشته است، با استفاده از دستور
float
به عدد اعشاری تبدیل میشود. celsius_temperature
متغیری است که دمای سلسیوس به صورت عددی را نگهداری میکند.
- مقدار ورودی که به صورت رشته است، با استفاده از دستور
- تبدیل دما به فارنهایت:
- دمای سلسیوس به فارنهایت با استفاده از فرمول
(celsius_temperature * 9/5) + 32
تبدیل میشود. fahrenheit_temperature
متغیری است که دمای فارنهایت را نگهداری میکند.
- دمای سلسیوس به فارنهایت با استفاده از فرمول
- نمایش دمای تبدیل شده:
- با استفاده از دستور
print
، دمای فارنهایت محاسبه شده نمایش داده میشود.
- با استفاده از دستور
پرسش های متداول
عملگرهای محاسباتی در پایتون را نام ببرید.
عملگرهای محاسباتی در پایتون شامل عملیاتهای ریاضیاتی پایهای هستند. این عملگرها عبارتند از:
+
برای جمع-
برای تفریق*
برای ضرب/
برای تقسیم//
برای تقسیم صحیح%
برای باقیمانده تقسیم**
برای توان
تفاوت بین عملگرهای ==
و =
چیست؟
عملگر =
برای تخصیص مقدار به یک متغیر استفاده میشود، در حالی که عملگر ==
برای مقایسه دو مقدار و بررسی برابری آنها استفاده میشود. به عنوان مثال، وقتی میگوییم a = 5
یعنی مقدار 5 را به متغیر a
اختصاص میدهیم، اما وقتی میگوییم a == 5
یعنی بررسی میکنیم آیا مقدار a
برابر با 5 است یا خیر.
تقدم عملگرها در عبارت 3 + 4 * 2
چگونه است؟
در پایتون، عملگر ضرب (*
) تقدم بیشتری نسبت به جمع (+
) دارد. بنابراین ابتدا ضرب انجام میشود و سپس جمع. در عبارت 3 + 4 * 2
، ابتدا 4 * 2
محاسبه میشود که نتیجه 8 است و سپس 3 + 8
محاسبه میشود که نتیجه 11 است.
عملگرهای بیتی درپایتون را نام ببرید وبرای هریک مثالی بزنید.
عملگرهای بیتی در پایتون برای عملیاتهای بیتی بر روی اعداد استفاده میشوند. این عملگرها عبارتند از:
&
(AND بیتی)|
(OR بیتی)^
(XOR بیتی)~
(NOT بیتی)<<
(شیفت به چپ)>>
(شیفت به راست)
به عنوان مثال، فرض کنید a = 5
که به صورت باینری 0101 است و b = 3
که به صورت باینری 0011 است. وقتی a & b
انجام میدهیم، نتیجه 0001 (یعنی 1) است. وقتی a | b
انجام میدهیم، نتیجه 0111 (یعنی 7) است و وقتی a ^ b
انجام میدهیم، نتیجه 0110 (یعنی 6) است.
در عبارت 5 + 3 * 2 ** 2
ترتیب ارزیابی عملگرها چگونه است؟
تقدم عملگرها به ترتیب توان (**
)، ضرب (*
) و سپس جمع (+
) است. بنابراین ابتدا توان محاسبه میشود، سپس ضرب و در نهایت جمع. در عبارت 5 + 3 * 2 ** 2
، ابتدا 2 ** 2
محاسبه میشود که نتیجه 4 است، سپس 3 * 4
محاسبه میشود که نتیجه 12 است و در نهایت 5 + 12
محاسبه میشود که نتیجه 17 است.
یادگیری تحلیل داده را از امروز شروع کنید!
دنیای دادهها جذاب است و دانستن علم داده، توانایی تحلیل داده، یا بازاریابی مبتنی بر داده، شما را برای فرصتهای شغلی بسیاری مناسب میکند. فارغ از رشته و پیشزمینه، میتوانید حالا شروع کنید و از سطح مقدماتی تا پیشرفته بیاموزید. اگر دوست دارید به این حوزه وارد شوید، پیشنهاد میکنیم با کلیک روی این لینک قدم اول را همین حالا بردارید. مشاوران کافهتدریس به شما کمک میکنند مسیر یادگیری برای ورود به این حوزه را شروع کنید.