Ưu tiên toán tử Python là gì?

Chúng ta sẽ có được kiến ​​thức về cả mức độ ưu tiên và tính kết hợp của toán tử Python trong hướng dẫn này. Hiểu cơ chế của các toán tử Python là rất quan trọng đối với các nhà phát triển

Sẽ là tốt nhất nếu người đọc hiểu cách Python đánh giá thứ tự của các toán tử sau khi kiểm tra nó. Một số nhà khai thác ưu tiên những người khác;

Trình thông dịch Python thực thi các thao tác của toán tử có mức độ ưu tiên cao hơn trước trong bất kỳ biểu thức logic hoặc số học đã cho nào. Ngoại trừ toán tử số mũ (**), tất cả các toán tử khác được thực hiện từ trái sang phải

Mức độ ưu tiên của toán tử Python

Một biểu thức là một tập hợp các số, biến, hoạt động và các lệnh gọi hàm tích hợp hoặc do người dùng xác định. Trình thông dịch Python có thể đánh giá một biểu thức hợp lệ

Mã số

đầu ra

Biểu thức 2 - 7 được sử dụng làm ví dụ ở đây. Trong một biểu thức, chúng ta có thể thêm nhiều toán tử. Có một nguyên tắc ưu tiên trong Python để đánh giá các loại biểu thức này. Nó chỉ đạo trình tự hoàn thành một số nhiệm vụ nhất định

Chẳng hạn, phép chia được ưu tiên hơn phép cộng

Mã số

đầu ra

Tuy nhiên, chúng ta có thể đảo ngược trình tự này bằng cách sử dụng dấu ngoặc đơn (), được ưu tiên hơn phép chia

Mã số

đầu ra

Bảng sau đây cho thấy mức độ ưu tiên của các toán tử Python. Nó theo thứ tự ngược lại (toán tử trên có độ ưu tiên cao hơn toán tử dưới)

OperatorsMeaning()Parentheses**Exponent+x, -x, ~xUnary plus, Unary minus, Bitwise NOT*, /, //, %Multiplication, Division, Floor division, Modulus+, -Addition, Subtraction<<, >>Bitwise shift operators&Bitwise AND^Bitwise XOR|Bitwise OR==, !=, >, >=, <, <=, is, is not, in, not inComparisons, Identity, Membership operatorsnotLogical NOTandLogical ANDorLogical OR

Xem xét các ví dụ sau

Giả sử chúng ta đang xây dựng một if. khối khác chỉ thực thi nếu màu đỏ hoặc xanh lục và số lượng lớn hơn hoặc bằng 5

Mã số

đầu ra

Your parcel is dispatched

Mặc dù số lượng là 0, chương trình này vẫn chạy nếu khối. Bởi vì và được ưu tiên hơn hoặc không tạo ra kết quả dự kiến

Sử dụng dấu ngoặc đơn () một cách thích hợp, chúng ta có thể nhận được kết quả cần thiết

Mã số

đầu ra

Your parcel cannot be dispatched

Tính liên kết của các toán tử Python

Chúng ta có thể quan sát thấy rằng một danh mục nhất định chứa nhiều toán tử trong danh sách trên. Thứ tự của các toán tử này giống hệt nhau

Hỗ trợ liên kết trong việc xác định chuỗi hoạt động khi hai toán tử chia sẻ cùng mức độ ưu tiên

Hướng đánh giá bất kỳ biểu thức đã cho nào có nhiều hơn một toán tử có cùng mức độ ưu tiên là tính kết hợp. Hầu hết mọi toán tử đều được kết hợp từ trái sang phải

Mã số

đầu ra

Ghi chú. Trong Python, phép toán số mũ ** sở hữu tính kết hợp từ phải sang trái

Mã số

đầu ra

Toán tử không liên kết

Một số toán tử, chẳng hạn như toán tử so sánh hoặc gán, không có quy tắc kết hợp như vậy trong Python. Các mẫu của loại toán tử này có các quy tắc riêng không thể được biểu diễn dưới dạng tính kết hợp. Chẳng hạn, a < b < c không giống như (a < b) < c hoặc a < (b < c). a < b < c được tính từ trái sang phải và tương tự với a < b và b < c

Ngoài ra, trong khi liên kết các toán tử gán chẳng hạn như a = b = c = 3 là hoàn toàn có thể chấp nhận được, thì a = b = c += 2 lại không được chấp nhận

Mã số

đầu ra

a = b = c += 2
              ^
SyntaxError: invalid syntax

Do đó, toán tử này không tuân theo tính kết hợp từ trái sang phải

Bảng bên dưới hiển thị tính kết hợp của các toán tử Python khác nhau

Toán tửDescriptionAssociativity( )Dấu ngoặc đơntrái sang phải**Số mũ từ phải sang trái* / %Phép nhân/chia/mô đuntừ trái sang phải+ -Cộng/trừ từ trái sang phải<< >>Dịch chuyển trái theo từng bit/Dịch chuyển phải theo từng bit từ trái sang phải<<=+= -=*= /=<<= >>=Toán tử gán. Cộng / trừNhân / chiaMô đun / theo bit VÀLoại trừ / bao gồm theo bit
> >=Toán tử quan hệ. nhỏ hơn / nhỏ hơn hoặc bằng / lớn hơn / lớn hơn hoặc bằng từ trái sang phải==. =Toán tử quan hệ. bằng / không bằng trái sang phảiis, không phải, không phải toán tử định danh Toán tử thành viên từ trái sang phải Toán tử AND theo bit từ trái sang phải^Toán tử dành riêng cho từng bit OR từ trái sang phải. Toán tử OR bao gồm theo từng bitleft sang phảinotLogical NOTright to leftandLogical ANDleft to rightorLogical ORleft to right=
+= -=
*= /=
%= &=
^= |=
<
Cộng / trừ
Nhân / chia
Mô đun / theo bit VÀ
Loại trừ / bao gồm theo bit
Bitwise shift left / right shiftright to left

Trong Python, làm cách nào để duy trì quyền ưu tiên của toán tử?

Bạn đã bao giờ đọc về quy tắc BODMAS trong số học chưa?

Nó chắc chắn sẽ là CÓ

Khung, thứ tự, phép chia, phép nhân, phép cộng và phép trừ đều là từ viết tắt của BODMAS. Khi các phép toán số học khác nhau xuất hiện trong một phương trình, quy tắc này chỉ định trình tự chúng sẽ được tính toán

Nếu chúng ta nhìn vào biểu đồ ưu tiên ở trên, chúng ta sẽ nhận thấy rằng thứ tự của các toán tử theo cách sau

Dấu ngoặc đơn - Lũy thừa - Nhân - Chia - Cộng - Trừ

PEMDAS là từ viết tắt của quy tắc này, tương đương với BODMAS

Phần kết luận

Trong hướng dẫn này, chúng ta đã học được rằng. -

Các quy tắc ưu tiên xác định mức độ ưu tiên trong đó các toán tử khác nhau được triển khai trong một phương trình

Cách một số phép toán có cùng cấp độ hoặc các toán tử có cùng mức độ ưu tiên được sử dụng trong một phương trình được xác định bởi các quy tắc kết hợp

Thứ tự ưu tiên của toán tử là gì?

Thứ tự ưu tiên của toán tử xác định mức độ "chặt chẽ" của toán tử liên kết hai biểu thức với nhau . Ví dụ: trong biểu thức 1 + 5 * 3 , câu trả lời là 16 chứ không phải 18 vì toán tử nhân ("*") có độ ưu tiên cao hơn toán tử cộng ("+"). Dấu ngoặc đơn có thể được sử dụng để buộc ưu tiên, nếu cần thiết.

Thứ tự ưu tiên của toán tử ++ là gì?

Trong một biểu thức, các toán tử có mức độ ưu tiên cao hơn sẽ được đánh giá trước. . Master C và Lập trình C nhúng- Học khi bạn đi

Toán tử và toán tử ưu tiên là gì?

Thứ tự ưu tiên của toán tử xác định cách các toán tử được phân tích cú pháp liên quan đến nhau . Toán tử có độ ưu tiên cao hơn trở thành toán hạng của toán tử có độ ưu tiên thấp hơn.

Toán tử nào có quyền ưu tiên cao nhất trong Python?

Python tuân theo các quy tắc ưu tiên giống như toán học đối với các toán tử toán học của nó. Dấu ngoặc đơn có quyền ưu tiên cao nhất và có thể được sử dụng để buộc một biểu thức đánh giá theo thứ tự bạn muốn. Vì các biểu thức trong ngoặc đơn được đánh giá trước, nên 2 * (3-1) là 4 và (1+1)**(5-2) là 8.