Python Operator Precedence

Python Operator Precedence

Một biểu thức có thể có nhiều toán tử cần được đánh giá. Độ ưu tiên của toán tử xác định thứ tự mà các toán tử được đánh giá. Nói cách khác, thứ tự đánh giá toán tử được xác định bởi độ ưu tiên của toán tử.

Nếu một biểu thức nhất định chứa nhiều toán tử, thứ tự đánh giá của chúng được xác định bởi thứ tự ưu tiên. Ví dụ, hãy xem xét biểu thức sau:

>>> a = 2+3*5

Ở đây, giá trị của a sẽ là gì? - đúng vậy, nó sẽ là 17 (nhân 3 với 5 trước rồi sau đó cộng 2) hoặc 25 (cộng 2 và 3 rồi sau đó nhân với 5)? Quy tắc ưu tiên toán tử của Python sẽ được áp dụng ở đây.

Nếu chúng ta chỉ xem xét các toán tử số học trong Python, quy tắc BODMAS truyền thống cũng được trình thông dịch Python áp dụng, trong đó các toán tử brackets được đánh giá trước, sau đó là các toán tử division multiplication , tiếp theo là các toán tử addition subtraction . Do đó, a sẽ trở thành 17 trong biểu thức trên.

Ngoài độ ưu tiên của toán tử, tính kết hợp của các toán tử cũng rất quan trọng. Nếu một biểu thức bao gồm các toán tử có cùng mức độ ưu tiên, thì tính kết hợp sẽ xác định thứ tự. Hầu hết các toán tử có tính kết hợp từ trái sang phải. Điều này có nghĩa là, toán tử bên trái được đánh giá trước toán tử bên phải.

Hãy xem xét một biểu thức khác:

>>> b = 10/5*4

Trong trường hợp này, cả hai toán tử * (nhân) và / (chia) đều có cùng mức độ ưu tiên. Tuy nhiên, quy tắc kết hợp từ trái sang phải thực hiện phép chia trước (10/5 = 2) và sau đó là phép nhân (2*4 = 8).

Python Operator Precedence Table

Bảng dưới đây liệt kê tất cả các toán tử trong Python theo thứ tự ưu tiên giảm dần. Các toán tử trong cùng một ô dưới cột Toán tử có cùng mức độ ưu tiên.

Sr.No. Operator & Description
1 (),[], {} Parentheses and braces
2 [index], [index:index] Subscription, slicing,
3 await x Await expression
4 ** Exponentiation
5 +x, -x, ~x Positive, negative, bitwise NOT
6 *, @, /, //, % Multiplication, matrix multiplication, division, floor division, remainder
7 +, - Addition and subtraction
8 <<, >> Left Shifts, Right Shifts
9 & Bitwise AND
10 ^ Bitwise XOR
11 | Bitwise OR
12 in, not in, is, is not, <, <=, >, >=, !=, == Comparisons, including membership tests and identity tests
13 not x Boolean NOT
14 and Boolean AND
15 or Boolean OR
16 if – else Conditional expression
17 lambda Lambda expression
18 := Walrus operator

Python Operator Precedence Example

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)

Khi bạn thực thi chương trình trên, nó sẽ tạo ra kết quả sau −

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