آموزش پایتون - اولویت عملگرها

یک عبارت ممکن است شامل چند عملگر باشد که باید ارزیابی شوند. اولویت عملگرها ترتیبی را مشخص می‌کند که عملگرها بر اساس آن ارزیابی می‌شوند. به عبارت دیگر، ترتیب ارزیابی عملگرها توسط اولویت عملگرها تعیین می‌شود.

اگر عبارت خاصی شامل چند عملگر باشد، ترتیب ارزیابی آن‌ها بر اساس اولویتشان تعیین می‌شود. برای مثال، عبارت زیر را در نظر بگیرید:

>>> a = 2+3*5

در اینجا مقدار a چه خواهد بود؟ - بله، آیا ۱۷ خواهد بود (ابتدا ضرب ۳ در ۵ و سپس جمع با ۲) یا ۲۵ (جمع ۲ و ۳ و سپس ضرب در ۵)؟ قانون اولویت عملگرها در پایتون در اینجا وارد عمل می‌شود.

اگر فقط عملگرهای حساب در پایتون را در نظر بگیریم، قانون سنتی BODMAS نیز توسط مفسر پایتون به کار گرفته می‌شود که در آن ابتدا پرانتزها ارزیابی می‌شوند، سپس عملگرهای تقسیم و ضرب، و در ادامه عملگرهای جمع و تفریق قرار می‌گیرند. بنابراین، مقدار a در عبارت بالا برابر با ۱۷ خواهد شد.

علاوه بر اولویت عملگرها، شرکت‌پذیری (هم‌پوشانی) عملگرها نیز اهمیت دارد. اگر یک عبارت شامل عملگرهایی با سطح اولویت یکسان باشد، شرکت‌پذیری ترتیب را تعیین می‌کند. اکثر عملگرها دارای شرکت‌پذیری از چپ به راست هستند. این بدان معناست که عملگر سمت چپ قبل از عملگر سمت راست ارزیابی می‌شود.

عبارت دیگری را در نظر بگیریم:

>>> b = 10/5*4

در این حالت، هر دو عملگر * (ضرب) و / (تقسیم) سطح اولویت یکسانی دارند. با این حال، قانون شرکت‌پذیری از چپ به راست ابتدا تقسیم را انجام می‌دهد (10/5 = 2) و سپس ضرب را (2*4 = 8).

جدول اولویت عملگرها در پایتون

جدول زیر تمام عملگرهای پایتون را به ترتیب نزولی اولویت آن‌ها فهرست می‌کند. عملگرهای موجود در یک سلول تحت ستون عملگرها، اولویت یکسانی دارند.

شماره عملگر و شرح
1

(),[], {}

پرانتزها، قلاب‌ها و آکولادها

2

[index], [index:index]

اندیس‌گذاری، برش‌زدن

3

await x

عبارت Await

4

**

به توان رساندن

5

+x, -x, ~x

مثبت، منفی، NOT بیت‌به‌بیت

6

*, @, /, //, %

ضرب، ضرب ماتریسی، تقسیم، تقسیم صحیح، باقی‌مانده

7

+, -

جمع و تفریق

8

<<, >>

شیفت به چپ، شیفت به راست

9

&

AND بیت‌به‌بیت

10

^

XOR بیت‌به‌بیت

11

|

OR بیت‌به‌بیت

12

in, not in, is, is not, <, <=, >, >=, !=, ==

مقایسه‌ها، شامل آزمون‌های عضویت و آزمون‌های هویت

13

not x

NOT بولین

14

and

AND بولین

15

or

OR بولین

16

if else

عبارت شرطی

17

lambda

عبارت لمبدا

18

:=

عملگر والروس (انتساب)

مثالی از اولویت عملگرها در پایتون

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.0
Value of ((a + b) * c) / d is  90.0
Value of (a + b) * (c / d) is  90.0
Value of a + (b * c) / d is  50.0

پیشرفت مطالعه: وضعیت خوانده‌شدن این درس فقط در همین مرورگر ذخیره می‌شود؛ بدون نیاز به حساب کاربری.