بیشتر فراخوانیها(خطوط منطقی) که مینویسید دارای عبارتها هستند. عباراتها را میتوان به دو بخش تقسیم کرد عملوندها و عبارتها.
برای مثال 2 + 3
اپراتور، یک قابلیتی است که میتواند نمادهای مانند +
یا کلیدهای خاص کیبورد را استفاده کند. اپراتورها به بعضی اطلاعات برای انجام این کار نیاز دارن که به این اطلاعات عملوند میگویند. در این خصوص 2
و 3
عملوند هستند.
به طور خلاصهوار به اپراتورها یک نگاهی میکنیم.
توجه داشته باشید که عبارتها را میتوانید ارزیابی کنید. برای مثال با استفاده از مفسر تعاملی (همان خط دستور)، برای انجام تست عبارتها 2 + 3
از کادرمحاورهی شل پایتون استفاده کنید:
>>> 2 + 3
5
>>> 3 * 5
15
>>>
چند مثال برای اشنایی:
-
+
(جمع)- اضافه کردن دو دستور العمل
3 + 5
نتیجهاش8
.'a' + 'b'
نتیجهاش'ab'
.
-
-
(منفی)- کم کردن یک عدد از عدد دیگر
5.2-
نتیجهاش منفی میشود و50 - 24
نتیجهاش26
.
-
*
(ضرب)- ضرب دو عدد را میدهد یا رشتهی را چندبار تکرار میکند.
2 * 3 نتیجهاش
6
.'la' * 3
نتیجهاش'lalala'
.
-
**
(توان)- به توان رساندن x به y.
3 ** 4
نتیجهاش81
(یاهمان3 * 3 * 3 * 3
).
-
/
(تقسیم)- تقسیم x به y
3 / 13
نتیجهاش4.333333333333333
.
-
//
(تقسیم صحیح)- تقسیم x به y به صورتکی که کوچکترین عدد را در نظر میگیرد.
3 // 13
نتیجهاش4
.3 // 13-
نتیجهاش5-
.
-
%
(باقیمانده)- باقیمانده تقسیم عدد را برمیگرداند.
3 % 13
نتیجهاش1
.-25.5 % 2.25
نتیچهاش1.5
-
<<
(به چپ جابهجا کردن (left shift))- به اندازهی یک بیت از شماره به سمت چپ جابهجا میکند.(هر عدد در حافظه به صورت مبنای دودویی است مانند 0 و 1)
2 << 2
نتیجهاش8
.2
در مبنای دو10
بیت را نمایش میدهد.- ۲ بیت به چپ جابهجا کردن نتیجهاش
1000
که در مبنای ده8
را نمایش میدهد.
-
>>
(به راست جابهجا کردن (right shift))- به اندازهی یک بیت از شماره به سمت راست جابهجا میکند.
11 >> 1
نتیجهاش5
.11
در حالتی بیتی1011
را نمایش میدهد، اگر به اندازه ۱ بیت سمت راست جابهجا کنیم نتیجهاش101
است.که در مبنای دهدهی5
است.
-
&
(بیت منطقی AND)- بیت منطقی AND و عدد
3 & 5
نتیجهاش1
.
-
|
(بیت منطقی OR)- بیت منطقی OR و عدد
3 | 5
نتیجهاش7
.
-
^
(بیت منطقی XOR)- بیت منطقی XOR و عدد
3 ^ 5
نتیجهاش6
.
-
~
(بیت منطقی (وارونهکردن)invert)- بیت منطقی X وارونهاش (x+1)- است.
~5
نتیجهاش-6
. اطلاعات بیشتر در http://stackoverflow.com/a/11810203
-
<
(کمتر)-
برسیمیکند، ایا X کمتر Y است. همهی مقایسههای عملوندها
True
یاFalse
را برمیگردانند.به این نکتههای توجه کنید. -
این
3 > 5
نتیجهاشFalse
و5 > 3
نتیجهاشTrue
. -
مقایسه میتواند به صورت زنچیرهای باشد:
7 > 5 > 3
نتیجهاشTrue
.
-
-
>
(بیشتر)- برسیمیکند، ایا X بیشتر Y است.
- این
3 < 5
نتیجهاشTrue
. اگر هر دو عملوندها عدد باشند تبدیل به نوع معمولی میشوند در غیره این صورت محتوای بازگشتی همیشهFalse
است.
-
<=
(کمتر یا مساوی)- برسیمیکند، ایا X کمتر یا مساوی Y است .
- این
x = 3; y = 6; x <= y
نتیجهاشTrue
.
-
>=
(بیشتر و مساوی)- برسیمیکند، ایا X بیشتر یا مساوی Y است .
- این
x = 4; y = 3; x >= 3
نتیجهاشTrue
.
-
==
(مساوری)- برسیمیکند، ایا دو مقدار باهم مساوی هستند.
- این
x = 2; y = 2; x == y
نتیجهاشTrue
. - این
x = 'str'; y = 'stR'; x == y
نتیجهاشFalse
. - این
x = 'str'; y = 'str'; x == y
نتیجهاشTrue
.
-
!=
(نامساوی)- برسیمیکند، ایا دو مقدار باهم نامساوی هستند.
- این
x = 2; y = 3; x != y
نتیجهاشTrue
.
-
not
(بولی NOT)- اگر X برار
True
باشد نتیجهاشFalse
است. اگر X برارFalse
باشد نتیجهاشTrue
است. - این
x = True; not x
نتیجهاشFalse
.
- اگر X برار
-
and
(بولی AND)- این
x and y
نتیجهاشFalse
اگر X برارFalse
وگرنه Y را برسی میکند. - این
x = False; y = True; x and y
نتیجهاشFalse
چونکه X برار False.در این حالت پایتون Y را ارزیابی میکند بخاطر انکه میداند قسمت راستی 'and' عبارتFalse
است که بدان معنی است که تمامی عبارتهاFalse
بدون دلالت دیگر عبارتها خواهد بود. این را به نام short-circuit evaluation مینامیم.
- این
-
or
(بولی OR)- اگر x برار
True
باشد نتیجهاش True است در غیر این صورت Y را ارزیابی میکند. - این
x = True; y = False; x or y
نتیجهاشTrue
است. در اینجاهم از Short-circuit evaluation استفاده میشود
- اگر x برار
معمولا عملیات ریاضی در متغییرها انجام میشود و جواب انها هم به متغییرها بر میگردد. بخاطر همین برای همچنین عبارتهای مینابرهای مانند زیر را داریم:
a = 2
a = a * 3
همچنین به این صورت هم میتوان نوشت:
a = 2
a *= 3
توجه داشته باشید که که عبارت var = var operation expression
تبدیل به var operation= expression
میشود.
اگر شما چنین عبارتی را دارید 4 * 3 + 2
بنظر شما اول جمع میشود یا ضرب میشود؟ طبق دروس ریاضی که در دبیرستان یاد گرفتیم، باید اول عمل ضرب انجام شود. و این بدان معنی است که عملوند ضرب اولویت بیشتر نسبت به عملوند جمع دارد .
در جدول بعدی اولویت عملوندهای پایتون گفته شده است. از پایینترین اولویت (اخرین مرحله) تا بالاترین اولویت(اولین مرحله). این بدان معنی است که عبارتهای پایتون در این جدول، اول عبارتها و عملوندهای که اولویت پایینتر دارند ارزیابی میشوند و بعد انهای که اولویت بیشتر دارند ارزیابی میشوند.
جدول بعدی از Python reference manual گرفته شده است. ترجیحا بهتر است که از پرانتز برای گروهبندی عملوندها و عبارتها استفاده شود. بخاطر انکه به این صورت میتوانیم به راحتی اولویت را درک کنیم.همچنین به راحتر کردن خواندن برنامه، این موضوع کمک میکند.بیشتر بدانید Changing the Order of Evaluation.
lambda
: Lambda Expressionif - else
: Conditional expression(عبارت شرطی)or
: Boolean OR (OR بولی)and
: Boolean AND (AND بولی)not x
: Boolean NOT (NOT بولی)in, not in, is, is not, <, <=, >, >=, !=, ==
: Comparisons, including membership tests and identity tests (مقایسه، شامل ارزیابی هویت ، انتساب متغییر)|
: Bitwise OR (OR بیتمنطقی)^
: Bitwise XOR (XOR بیتمنطقی)&
: Bitwise AND (AND بیتمنطقی)<<, >>
: Shifts (جابهجاکردن یا همون شیفت دادن)+, -
: Addition and subtraction (جمع و تفریق)*, /, //, %
: Multiplication, Division, Floor Division and Remainder (ضرب، تقسیم، تقسیم صحیح و باقیمانده)+x, -x, ~x
: Positive, Negative, bitwise NOT (NOT مثت، منفی، بیتمنطقی)**
: Exponentiationx[index], x[index:index], x(arguments...), x.attribute
: Subscription, slicing, call, attribute reference (فراخوانی، بقیه را هر کسی که معنی تخصصی اش را میداند بگذارد)(expressions...), [expressions...], {key: value...}, {expressions...}
: Binding or tuple display, list display, dictionary display, set display (...)
اپراتورهای که تا به حال ندیدهایم در فصول بعدی توضیح داده خواهد شد.
اپراتورهای که اولویت یکسان دارند همان طور که در جدول بالا میبیند. برای مثال +
و -
که اولویت یکسانی دارند. تمامی انان در یک خط نوشته شدهاند.
{#changing-order-of-evaluation}
برای انکه عبارتها را بهتر بفهیم و راحتر قابل خواندن باشند میتوانیم پرانتز استفاده کنیم. برای مثال 2 + (3 * 4)
واقعا فهم این راحتر از 2 + 3 * 4
بخاطرهمین اولویت عملوندها یادگیراش مهم است. این را هم در نظر بگیرید که پرانتزها باید عاقلانه استفاده شوند(جوگیر نشوید).همچین پرانتزها باید مقداردهی شوند برای مثال (2 + (3 * 4))
.
همچنین یک نکته دیگر بهتر برای استفاده از پرانتز داریم با این روش میتوان اولویتها را تغییر داد. برای مثال اگر شما میخواهید جمع اولویت بیشتر نسبت به ضرب داشته باشد، میتوانید از این روش استفاده کنید (2 + 3) * 4
.
عملوندها معمولا از راست به چپ باهم در ارتباط هستند.این بدان معنی است که عملوندها با اولویت یکسان از چپ به راست ارزیابی میشوند.برای مثال 2 + 3 + 4
و به این صورت (2 + 3) + 4
ارزیابی میشوند.
مثال (expression.py
همچین قایل را ذخیره کنید)
length = 5
breadth = 2
area = length * breadth
print('Area is', area)
print('Perimeter is', 2 * (length + breadth))
خروجی:
$ python expression.py
Area is 10
Perimeter is 14
طول و عرض مستطیل با همان اسم در متغییر ذخیره میشوند. برای محاسبه طول و عرض مستطیل از عبارتها استفاده میشود. نتیجه را در عبارت length * breadth (طول و عرض)
در +area(مساحت)+ ذخیره میکنیم. و بعد با استفاده از تابع +print+ خروجی 2 * (length + breadth)
را چاپ میکنیم. همین طور که مشاهده میکنید دراینجا از محتویات عبارتها استفاده میکنیم.
همچنین این نکته را در نظر بگیرید که پایتون به چه زیبایی خروجی را چاپ میکند. حتی با اینکه بین 'Area is'
و متغییر area
فاصله نگذاشتیم. به چه زیبایی پایتون این فاصلههای را گذشته است. برای این که یک خروجی تمیز و قابل خواندن داشته باشیم(دیگر نیاز نیست برای فاصلهی خطوط نگران باشیم). این یکی از مثالهای است که پایتون زندگی برنامهنویسان را اسودهتر میکند.
چگونگی استفاده از اپراتورها و عبارتها را دیدیم. این موضوع یک ساختار مهم در بلوکهای برنامهنویسی است. در فصول بعدی خواهیم دید چگونه دربرنامههایمان ازفراخوانیها استفاده کنیم.
test