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 và multiplication , tiếp theo là các toán tử addition và 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).
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 |
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