عملگرها در پایتون
عملگر چیست؟
یک جواب ساده برای این سوال اینه که وقتی یک عبارتی مثل 4 + 5 داریم و جمعشون برابر 9 میشه به 4 و 5 میگیم عملوند و به + میگیم عملگر. یعنی چیزی که روی عملوند ها تاثیر میذاره و ی خروجی به ما میده. در زیر به انواع عملگرها اشاره میکنم:
- عملگرهای ریاضی یا Arithmetic Operators
- عملگرهای قیاسی یا Comparison Operators
- عملگرهای انتسابی یا Assignment Operators
- عملگرهای منطقی یا Logical Operators
- عملگرهای بیتی یا Bitwise Operators
- عملگرهای عضوی یا Membership Operators
- عملگرهای شناسه یا Identity Operators
حالا میخوام ی نگاه دقیق تری به این عملگر ها بندازم.
عملگرهای ریاضی در پایتون
اگر فرض کنیم متغیر a مقداری برابر 10 و متغیر b دارای مقدار 20 هستند سپس:
- +: دو مقدار را با هم جمع میکند - a+b=30
- - : دو مقدار را از هم کم میکند - a - b = -10
- * : دو مقدار را در هم ضرب میکند - a*b=200
- / : خارج قسمت تقسیم دو عدد را نشان میدهد - a/b=2
- % : باقیمانده تقسیم دو عدد بر یکدیگر را نشام میدهد - a%b=0
- ** : عدد اول را به توان عدد دوم میبرد - a**b=> ده به توان بیست
- // : خارج قسمت تقسیم دو عدد بر یکدیگر را به صورت عدد صحیح نشان میدهد. برای مثال 4=2//9
عملگرهای قیاسی در پایتون
با همان فرض داریم:
- == : چک میکند که آیا مقادیر a و b با هم برابر هستند یا خیر. اگر برابر بودند شرط درست است.
- =! : چک میکند که آیا مقدار آن دو متغیر با هم نابرابر است یا خیر. اگر نابرابر بود شرط درست است.
- <> : این عملگر دقیقا مانند عملگر قبل می باشد.
- < : چک میکند که آیا متغیر اول بزرگتر از دومی است یا خیر. اگر بزرگتر بود شرط درست است.
- > : چک میکند که آیا متغیر اول کوچکتر از دومی است یا خیر. اگر کوچکتر بود شرط درست است.
- =< : چک میکند آیا متغیر اول بزرگتر یا مساوی دومی است یا خیر. اگر بزرگتر یا مساوی بود شرط درست است.
- => :چک میکند که آیا متغیر اول کوچکتر یا مساوی دومی است یا خیر. اگر کوچکتر یل مساوی بود شرط درست است.
عملگرهای انتسابی در پایتون
با فرض قبل داریم:
- = : خروجی دو متغیر را در دیگری میریزد بعنوان مثال c=a+b
- =+ : این عملگر به صورت c += a می باشد که برابر با c = c+a است
- =- : این عملگر به صورت c -= a می باشد که برابر با c = c-a است
- =* : این عملگر به صورت c *= a می باشد که برابر با c = c*a است
- =/ : این عملگر به صورت c /= a می باشد که برابر با c = c/a است
- =% : این عملگر به صورت c %= a می باشد که برابر با c = c%a است
- =** : این عملگر به صورت c **= a می باشد که برابر با c = c**a است
- =// : این عملگر به صورت c //= a می باشد که برابر با c = c//a است
عملگرهای بیتی
اگر فرض کنیم مقدار a برابر با 60 و مقدار b برابر با 13 می باشد خواهیم داشت:
a = 0011 1100
b = 0000 1101
------------------
a&b = 0000 1100
a|b = 0011 1101
a^b = 0011 0001
~a = 1100 0011
- & : عملگر باینری AND
- | : عملگر باینری OR
- ^ : عملگر باینری XOR
- ~ : عملگر مکمل یکه باینری (در اصل بیت ها را معکوس میکند)
- >> : عملگر باینری شیفت به چپ دهنده بیت ها
- << : عملگر باینری شیفت به راست دهنده بیت ها
به مثال های بیشری در این باره توجه کنید:
#!/usr/bin/python
a = 60 # 60 = 0011 1100
b = 13 # 13 = 0000 1101
c = 0
c = a & b; # 12 = 0000 1100
print "Line 1 - Value of c is ", c
c = a | b; # 61 = 0011 1101
print "Line 2 - Value of c is ", c
c = a ^ b; # 49 = 0011 0001
print "Line 3 - Value of c is ", c
c = ~a; # -61 = 1100 0011
print "Line 4 - Value of c is ", c
c = a << 2; # 240 = 1111 0000
print "Line 5 - Value of c is ", c
c = a >> 2; # 15 = 0000 1111
print "Line 6 - Value of c is ", c
خروجی این اسکریپت به صورت زیر خواهد بود:
Line 1 - Value of c is 12
Line 2 - Value of c is 61
Line 3 - Value of c is 49
Line 4 - Value of c is -61
Line 5 - Value of c is 240
Line 6 - Value of c is 15
عملگرهای منطقی پایتون
در زبان پایتون بعضی عملگرها منطقی هستند که در ادامه به توضیح خواهم پرداخت:
- and : اگر هر دو عملوند درست باشند شرط درست است.
- or : اگر یکی از عملوند ها درست باشد شرط درست است(یکی از عملوند ها صفر نباشد شرط درست است.)
- not : بیان میکند که اگر شرط درست است عملگر not آن را نادرست میکند.
مثال: (not(a and b
عملگرهای عضوی پایتون
هنگام یافتن مقدار در دنباله استفاده میشود:
- in : وقتی درست است که متغیری را در دنباله ای پیدا کند و وقتی نادرست است که متغیر در دنباله یافت نشود.
- not in : اگر متغیری در دنباله یافت نشود شرط صحیح و اگر متغیر در دنباله یافت شود شرط ناصحیح است.
عملگر های شناسه در پایتون
متغیر های شناسه نیز موقعیت دو شی در حافظه را با هم مقایسه میکنند:
- is : شرط درست است اگر یک طرف عملگر به موقعیت شی مشابه دیگر اشاره کند و در غیر این صورت شرط نادرست است.
- is not : شرط نادرست است اگر متغیرها در یک طرف عملگر به شی مشابه دیگر اشاره کند و در غیر این صورت شرط درست است.
اولویت عملگر های در پایتون
در ادامه به اولویت عملگر ها در پایتون به ترتیب از بالا به پایین میپردازم:
**
~ + -
* / % //
+ -
>> <<
&
^ |
<= < > >=
<> == !=
= %= /= -= += *=
is is not
not or and
حال برای درک بهتر به مثال زیر توجه کنید:
#!/usr/bin/python
a = 20
b = 10
c = 15
d = 5
e = 0
e = (a + b) * c / d #( 30 * 15 ) / 5
print "Value of (a + b) * c / d is ", e
e = ((a + b) * c) / d # (30 * 15 ) / 5
print "Value of ((a + b) * c) / d is ", e
e = (a + b) * (c / d); # (30) * (15/5)
print "Value of (a + b) * (c / d) is ", e
e = a + (b * c) / d; # 20 + (150/5)
print "Value of a + (b * c) / d is ", e
خروجی اسکریپت بالا به صورت زیر خواهد بود:
Value of (a + b) * c / d is 90
Value of ((a + b) * c) / d is 90
Value of (a + b) * (c / d) is 90
Value of a + (b * c) / d is 50