Thứ Tự Ưu Tiên Toán Tử Trong Python

Xin chào, các nhà lập trình Python nhảy mũ! Hôm nay, chúng ta sẽ vào một chủ đề có vẻ khá nguy hiểm ban đầu, nhưng tôi hứa rằng bạn sẽ tìm thấy nó thú vị khi chúng ta phân tích chi tiết. Chúng ta đang nói về Thứ Tự Ưu Tiên Toán Tử trong Python. Hãy tưởng tượng nó như là "thứ tự ăn" của các thao tác trong Python. Hãy cùng nhau bắt đầu hành trình thú vị này!

Python - Operator Precedence

Thứ Tự Ưu Tiên Toán Tử Là Gì?

Trước khi chúng ta nhảy vào chi tiết cụ thể của Python, hãy hiểu điều gì là thứ tự ưu tiên toán tử trong chung. Tưởng tượng bạn đang ở trong một bếp bếp buồn (đừng rời khỏi tôi, tôi hứa rằng truyền likeness này sẽ có ý nghĩa). Trong bếp này, các đầu bếp khác nhau chịu trách nhiệm cho các nhiệm vụ khác nhau. Một số đang cắt rau, một số đang rán, và một số đang trang trí. Những nhiệm vụ này cần được thực hiện theo thứ tự cụ thể để tạo ra món ăn hoàn hảo. Thứ tự này tương tự như thứ tự ưu tiên toán tử trong lập trình.

Trong Python, khi bạn viết một biểu thức với nhiều toán tử, thứ tự ưu tiên xác định thứ tự các thao tác này được thực hiện. Giống như trong truyền likeness của chúng ta, một số thao tác có ưu tiên cao hơn những thao tác khác.

Hãy xem một ví dụ đơn giản:

ket_qua = 5 + 3 * 2
print(ket_qua)

Bạn nghĩ kết quả sẽ là gì? Nếu bạn đoán đúng 11, bạn đúng! Nhưng tại sao?

Đây là nơi thứ tự ưu tiên toán tử xuất hiện. Trong Python (và hầu hết các ngôn ngữ lập trình), nhân có ưu tiên cao hơn cộng. Vì vậy, biểu thức này được tính như thế này:

  1. Trước tiên, 3 * 2 được tính, có kết quả là 6
  2. Sau đó, 5 được cộng vào 6, cho ra 11

Nếu chúng ta muốn thay đổi thứ tự này, chúng ta sẽ sử dụng dấu ngoặc, như sau:

ket_qua = (5 + 3) * 2
print(ket_qua)

Bây giờ kết quả sẽ là 16, vì dấu ngoặc có ưu tiên cao nhất, buộc phép cộng xảy ra trước phép nhân.

Bảng Thứ Tự Ưu Tiên Toán Tử Trong Python

Bây giờ chúng ta đã hiểu khái niệm, hãy xem xét bảng đầy đủ của thứ tự ưu tiên toán tử trong Python. Nhớ rằng, các toán tử ở trên bảng có ưu tiên cao hơn những toán tử bên dưới.

Ưu tiên Toán tử Mô tả
1 () Dấu ngoặc
2 ** Lũy thừa
3 +x, -x, ~x Cộng, trừ và NOT nhị phân
4 *, /, //, % Nhân, chia, chia dư, phần dư
5 +, - Cộng và trừ
6 <<, >> Toán tử dịch nhị phân
7 & AND nhị phân
8 ^ XOR nhị phân
9 | OR nhị phân
10 ==, !=, >, >=, <, <=, is, is not, in, not in So sánh, nhận diện và toán tử phần của
11 not NOT logic
12 and AND logic
13 or OR logic

Đừng lo nếu một số toán tử này vẫn bạn không quen. Chúng ta sẽ tập trung vào những toán tử phổ biến nhất hiện tại.

Ví Dụ Thứ Tự Ưu Tiên Toán Tử Trong Python

Hãy cùng nhau xem qua một số ví dụ để thấy cách bảng thứ tự ưu tiên này hoạt động trong thực tế.

Ví dụ 1: Toán Tử Định Lý

ket_qua = 10 + 5 * 2 - 3 ** 2
print(ket_qua)

Hãy phân tích từng bước:

  1. 3 ** 2 = 9 (Lũy thừa có ưu tiên cao nhất)
  2. 5 * 2 = 10 (Nhân tiếp theo)
  3. 10 + 10 - 9 = 11 (Cộng và trừ được thực hiện từ trái sang phải)

Vậy kết quả cuối cùng là 11.

Ví dụ 2: Toán Tử So Sánh và Logic

x = 5
y = 10
z = 15

ket_qua = x < y and y < z or x == z
print(ket_qua)

Đây là cách tính toán:

  1. x < y là True
  2. y < z là True
  3. x == z là False
  4. True and True là True
  5. True or False là True

Vậy kết quả cuối cùng là True.

Ví dụ 3: Kết Hợp Các Loại Toán Tử Khác Nhau

a = 2
b = 3
c = 4

ket_qua = a * b ** 2 + c > (a + b) * c and not a == b
print(ket_qua)

Hãy phân tích:

  1. b ** 2 = 9 (Lũy thừa trước)
  2. a * 9 = 18 (Nhân tiếp)
  3. 18 + c = 22 (Cộng)
  4. (a + b) = 5 (Dấu ngoặc có ưu tiên cao nhất)
  5. 5 * c = 20 (Nhân)
  6. 22 > 20 là True (So sánh)
  7. a == b là False (So sánh bằng)
  8. not False là True (NOT logic)
  9. True and True là True (AND logic)

Kết quả cuối cùng là True.

Kết Luận

Hiểu về thứ tự ưu tiên toán tử là rất quan trọng để viết mã Python chính xác và hiệu quả. Nó giúp bạn dự đoán cách biểu thức của bạn sẽ được tính toán và tránh kết quả bất ngờ. Nhớ rằng, khi nghi ngờ, hãy sử dụng dấu ngoặc để xác định rõ ràng thứ tự của các phép toán. Điều này không chỉ đảm bảo mã của bạn hoạt động như mong đợi mà còn làm cho nó dễ đọc hơn cho người khác (và tương lai của bạn!).

Khi bạn tiếp tục hành trình Python của mình, bạn sẽ quen thuộc hơn với các quy tắc thứ tự này. Đừng lo nếu nó có vẻ quá quá tải ban đầu – với thực hành, nó sẽ trở thành nhân tạo. Tiếp tục lập trình, tiếp tục thử nghiệm, và nhất quan, hãy vui vẻ! Cuối cùng, lập trình như nấu ăn – càng thực hành càng tốt, "món ăn" của bạn sẽ tốt hơn. Chúc mừng mãi mãi các nhà lập trình Python tương lai!

Credits: Image by storyset