Thứ tự ưu tiên của toán tử xác định thứ tự các thao tác được xử lý. Trong hướng dẫn này, bạn sẽ thực hiện một thủ thuật toán học bằng cách sử dụng dấu ngoặc đơn lồng nhau để kiểm soát mức độ ưu tiên của toán tử Python. Nếu bạn mới tham gia với chúng tôi, bạn có thể muốn bắt đầu với bài viết trước của chúng tôi, Toán tử Python là toán học
Ưu tiên toán tử Python
Bây giờ chúng ta quay lại câu chuyện đang tiếp diễn tại Bệnh viện Robot toàn cầu của Rossum. Egos bùng lên như Drs. Plus, Minus, Slash, Asterisk và Powers tranh luận ai là người có nhiều quyền nhất. Kháng cáo được gửi tới chủ tịch bệnh viện, ngoặc đơn. Giống như bất kỳ bệnh viện robot tốt nào, có một hệ thống phân cấp giữa các hoạt động
Xem điều gì sẽ xảy ra khi chúng ta chạy một biểu thức liên quan đến các toán tử hỗn hợp
>>> 1 + 2 * 3
7
Bạn có thể mong đợi nó bằng 9. Nhưng trình thông dịch Python không đọc hoặc xử lý toán tử từ trái sang phải như chúng ta. Thay vào đó, trình thông dịch Python xếp hạng các toán tử theo mức độ quan trọng và xử lý chúng theo một trình tự cụ thể. Đây được gọi là thứ tự của các hoạt động hoặc, tùy thuộc vào người bạn đang nói chuyện với, quyền ưu tiên của nhà điều hành. Trong ví dụ trên, phép nhân có mức độ ưu tiên cao hơn phép cộng, vì vậy 2 * 3 được xử lý trước, sau đó được cộng vào 1. Sử dụng dấu ngoặc đơn, chúng ta có thể buộc các toán tử có mức độ ưu tiên thấp hơn chạy trước
>>> [1 + 2] * 3
9
Hãy xem PEMDAS. Không, PEMDAS không phải là một dòng chữ trên biểu đồ mắt. Đó là một từ viết tắt để giúp bạn nhớ những toán tử nào đứng trước những toán tử khác. Chữ viết tắt là viết tắt của Dấu ngoặc đơn Phép nhân Phép chia Phép cộng Phép trừ. Bạn có thể ghi nhớ nó với “Xin thứ lỗi cho dì Susie thân mến của tôi”. Nhớ Susie chứ?
Biểu đồ sau phác thảo mức độ ưu tiên của toán tử
Chủ tịch ưu tiên cao nhất [] Dấu ngoặc đơn Dr. Lũy thừa**Lũy thừaDr. Dấu hoa thị*Nhân Dr. Slash/DivisionDr. Cộng+Thêm Ưu tiên thấp nhấtDr. Dấu trừ–Phép trừTrong phép ẩn dụ về bệnh viện rô-bốt của chúng ta, Chủ tịch Parentheses có quyền hạn cao nhất, tiếp theo là Tiến sĩ. Quyền hạn, Tiến sĩ. Dấu hoa thị, tiến sĩ. Chém, tiến sĩ. Ngoài ra, và cuối cùng, Tiến sĩ. Dấu trừ. Như bạn có thể thấy, nó trả tiền để nghĩ lớn. Dấu ngoặc đơn xác định thứ tự các hoạt động. Bất kỳ thao tác nào chứa trong dấu ngoặc đơn đều được thực hiện trước. Nhưng nó trở nên tốt hơn. Bạn có thể sử dụng dấu ngoặc đơn để lồng các phép toán trong các phép toán, giống như búp bê Matryoshka làm bằng Trăn
Dấu ngoặc đơn là toán học
Hãy cùng xem lại trò ảo thuật của chúng ta, lần này sử dụng quy tắc ưu tiên với dấu ngoặc đơn lồng nhau VÀ phép thuật của Python. Để chứng minh rằng nó hoạt động với bất kỳ số nào, tôi sẽ sử dụng số nguyên không may mắn 13. Bạn có thể sử dụng bất kỳ số nguyên dương nào bạn muốn. Bắt đầu xây dựng câu lệnh của bạn trên lời nhắc Python của bạn, nhưng đừng nhấn quay lại cho đến khi tôi nói như vậy
Bước đầu tiên trong trò ảo thuật của chúng ta là cộng 5. Chúng tôi muốn điều đó xảy ra trước, vì vậy hãy đặt nó trong ngoặc đơn, như thế này
>>>[ 13 + 5 ]
Tiếp theo ta nhân kết quả đó với 2. Kết thúc câu lệnh đầu tiên của chúng ta trong một cặp dấu ngoặc đơn khác với *2 ẩn bên trong
>>>[ [ 13 + 5 ] * 2]
Bây giờ chúng ta cần trừ 4. Bọc nó trong một bộ dấu ngoặc đơn khác có chứa biểu thức '-4'
>>>[ [ [ 13 + 5 ] * 2 ] - 4 ]
Bộ dấu ngoặc đơn cuối cùng của chúng ta cần chia kết quả hiện tại cho 2
>>>[ [ [ [ 13 + 5 ] * 2 ] - 4 ] / 2]
Cuối cùng, chúng tôi trừ số ban đầu của chúng tôi. Không cần thiết phải đặt nó trong dấu ngoặc đơn vì đây sẽ là thao tác cuối cùng được thực hiện
Một số toán tử có quyền ưu tiên cao hơn những toán tử khác;
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
Toán tử -then- Mô tả
- ** Luỹ thừa [nâng lũy thừa]
- ~ + - Ccomplement, cộng và trừ một ngôi [tên phương thức cho hai phần cuối là [email được bảo vệ] và [email được bảo vệ]]
- / % // Nhân, chia, modulo và chia sàn
= Toán tử so sánh
- ==. = Toán tử bình đẳng
- = %= /= //= -= += = *= Toán tử gán
- không phải là Toán tử danh tính
- trong không phải trong Toán tử thành viên
- không hoặc và Toán tử logic
Tôi lấy cái này từ một trang web tôi sử dụng khi Bài học của Codecademy thiếu hướng dẫn. Hướng dẫn lập trình Python