PHP
Python

Trang chủ

Bảng thứ tự ưu tiên toán tử trong Python

Ngôn ngữ Python là một ngôn ngữ lập trình đa mục đích, nổi tiếng với cú pháp dễ đọc, dễ học và tính ứng dụng cao. Trong lĩnh vực phát triển web, Python thường được sử dụng thông qua các framework như Django và Flask để xây dựng các ứng dụng web mạnh mẽ, bảo mật và dễ mở rộng. Trong chuyên mục này, Vietnix không chỉ cung cấp kiến thức nền tảng về ngôn ngữ Python mà còn hướng dẫn chi tiết cách xây dựng các ứng dụng web thực tế, sử dụng các framework phổ biến và áp dụng các kỹ thuật tiên tiến. Vietnix cam kết liên tục cập nhật những bài viết mới nhất về các tính năng mới của Python, các thư viện hỗ trợ hữu ích và những phương pháp tốt nhất, giúp bạn khai thác tối đa sức mạnh của Python và hoàn thiện kỹ năng lập trình web của mình.
html
CSS
javascript
sql
python
php
c
c++
bootstrap
react
mysql
reactjs
vuejs
Javascript Tutorials
06/02/2025
8 phút đọc
Theo dõi Vietnix trên

Bảng thứ tự ưu tiên toán tử trong Python

Trong Python, các toán tử được thực hiện theo một thứ tự nhất định, tương tự như quy tắc thực hiện phép tính trong toán học. Để hiểu rõ hơn về thứ tự ưu tiên toán tử trong Python và cách nó ảnh hưởng đến kết quả của biểu thức, hãy cùng tìm hiểu chi tiết trong bài viết này.

Các điểm chính

Khi đọc xong bài viết, bạn sẽ:

  • Hiểu rõ bản chất của thứ tự ưu tiên toán tử: Nắm vững định nghĩa và tầm quan trọng của việc xác định thứ tự thực hiện các phép toán.
  • Làm chủ bảng thứ tự ưu tiên toán tử Python: Biết cách tra cứu và áp dụng bảng này để đảm bảo tính chính xác của code.
  • Vận dụng linh hoạt thông qua các ví dụ minh họa: Thực hành các ví dụ cụ thể giúp bạn hiểu sâu hơn cách toán tử được xử lý theo thứ tự ưu tiên.
  • Nâng cao kỹ năng giải quyết các bài toán phức tạp: Phát triển khả năng tư duy logic và giải quyết các bài toán liên quan đến nhiều toán tử.
  • Biết đến Vietnix – Nhà cung cấp dịch vụ VPS toàn diện: Từ hiệu suất đến bảo mật.

Thứ tự ưu tiên toán tử trong Python

Khi một biểu thức có nhiều toán tử, thứ tự ưu tiên toán tử (Operator Precedence) sẽ quyết định trình tự thực hiện các phép toán. Nếu một biểu thức bao gồm nhiều toán tử, thứ tự thực hiện các toán tử sẽ tuân theo quy tắc ưu tiên. Ví dụ, hãy xem xét biểu thức sau:

a = 2 + 3 * 5

Giá trị của a là bao nhiêu? Sẽ là 17 (nhân 3 với 5 trước rồi cộng với 2) hay 25 (cộng 2 và 3 trước, sau đó nhân với 5)? Đây chính là lúc quy tắc ưu tiên toán tử trong Python được áp dụng.

Khi một biểu thức có nhiều toán tử, thứ tự ưu tiên toán tử sẽ quyết định trình tự thực hiện các phép toán
Khi một biểu thức có nhiều toán tử, thứ tự ưu tiên toán tử sẽ quyết định trình tự thực hiện các phép toán

Nếu chúng ta chỉ xét các toán tử số học trong Python, trình thông dịch Python cũng áp dụng quy tắc BODMAS quen thuộc (hay PEMDAS ở một số nước). Tức là các phép toán trong ngoặc được ưu tiên trước, tiếp theo là phép chia và phép nhân, rồi đến phép cộng và phép trừ. Vì vậy, giá trị của a trong biểu thức trên sẽ là 17.

Để dễ hình dung hơn, bạn cứ xem phép tính như là một bài toán ở trường. Bình thường, các thầy cô luôn dặn, bài toán mà có nhiều phép tính thì phải “nhân chia trước, cộng trừ sau” đúng không? Với Python, ngôn ngữ lập trình này cũng sẽ làm đúng y như vậy!

Bên cạnh thứ tự ưu tiên, tính kết hợp (associativity) của các toán tử cũng quan trọng. Nếu một biểu thức có nhiều toán tử có cùng mức ưu tiên, tính kết hợp sẽ xác định trình tự thực hiện. 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 sẽ được thực hiện 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, nhờ tính kết hợp từ trái sang phải, phép chia 10 / 5 sẽ được thực hiện trước, cho ra kết quả là 2. Sau đó, kết quả này sẽ được nhân với 4 (2 * 4), giá trị cuối cùng của b sẽ là 8.

Bảng thứ tự ưu tiên toán tử trong Python

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

SttToán tử & mô tả
1(),[], {}
Dấu ngoặc tròn, ngoặc vuông và ngoặc nhọn
2[index], [index:index]
Truy cập phần tử (subscription), cắt (slicing)
3await x
Biểu thức await
4**
Lũy thừa
5+x, -x, ~x
Dương (Positive), âm (negative), đảo bit (bitwise NOT)
6*, @, /, //, %
Nhân, nhân ma trận, chia, chia lấy phần nguyên, chia lấy dư
7+, -
Cộng và trừ
8<<, >>
Dịch trái, dịch phải (bit)
9&
AND (bit)
10^
XOR (bit)
11|
OR (bit)
12in, not in, is, is not, <, <=, >, >=, !=, ==
So sánh, bao gồm kiểm tra phần tử (membership) và kiểm tra đồng nhất (identity)
13not x
NOT (logic)
14and
AND (logic)
15or
OR (logic)
16if – else
Biểu thức điều kiện
17lambda
Biểu thức Lambda
18:=
Toán tử Walrus

Ví dụ về thứ tự ưu tiên toán tử trong Python

Khi làm việc với nhiều toán tử trong cùng một biểu thức, Python cần một quy tắc để biết nên thực hiện toán tử nào trước. Quy tắc này được gọi là “thứ tự ưu tiên của toán tử”. Hãy cùng xem xét ví dụ sau để hiểu rõ hơn về quy tắc này:

a = 20
b = 10
c = 15
d = 5
e = 0

e = (a + b) * c / d       # (30 * 15) / 5
print ("Giá trị của (a + b) * c / d là ",  e)

e = ((a + b) * c) / d     # (30 * 15) / 5
print ("Giá trị của ((a + b) * c) / d là ",  e)

e = (a + b) * (c / d)    # (30) * (15/5)
print ("Giá trị của (a + b) * (c / d) là ",  e)

e = a + (b * c) / d      #  20 + (150/5)
print ("Giá trị của a + (b * c) / d là ",  e)

Kết quả khi chạy chương trình:

Giá trị của (a + b) * c / d là  90.0

Giá trị của ((a + b) * c) / d là  90.0

Giá trị của (a + b) * (c / d) là  90.0

Giá trị của a + (b * c) / d là  50.0

Ví dụ trên cho thấy:

  • Phép toán trong ngoặc () luôn được ưu tiên thực hiện trước.
  • Trong trường hợp không có ngoặc, phép nhân (*) và phép chia (/) có độ ưu tiên cao hơn phép cộng (+) và phép trừ (-).

Vietnix – Nhà cung cấp dịch vụ VPS toàn diện: Từ hiệu suất đến bảo mật

Với hơn 12 năm kinh nghiệm và hơn 100,000 dịch vụ đã được kích hoạt, Vietnix tự tin cung cấp giải pháp thuê VPS hiệu suất cao, đáp ứng đa dạng nhu cầu từ website cá nhân đến doanh nghiệp. Sử dụng ổ cứng SSD/NVMe Enterprise, CPU Intel Xeon/AMD và công nghệ ảo hóa tiên tiến, dịch vụ đảm bảo tốc độ tải trang vượt trội, kết nối ổn định với tốc độ lên đến 200Mbps trong nước và 20Mbps quốc tế. Bên cạnh đó, khách hàng được trải nghiệm giao diện quản trị trực quan, tùy chỉnh linh hoạt, sao lưu dữ liệu tự động hàng tuần và lựa chọn đa dạng hệ điều hành.

Đối với những yêu cầu về hiệu suất cao, thì VPS NVMe của Vietnix là lựa chọn lý tưởng. Được trang bị ổ cứng NVMe tốc độ cao gấp 10 lần SSD truyền thống và CPU Intel Platinum, VPS NVMe xử lý mọi tác vụ nhanh chóng, mang đến trải nghiệm người dùng vượt trội. Tốc độ mạng 400Mbps, hỗ trợ kỹ thuật 24/7 đa kênh, sao lưu dữ liệu định kỳ và toàn quyền quản trị giúp khách hàng hoàn toàn kiểm soát máy chủ. Đạt chuẩn ISO 27001:2022 (ISMS) và ISO 9001:2015 (QMS), dịch vụ VPS NVMe của Vietnix đảm bảo an toàn dữ liệu và chất lượng dịch vụ đạt chuẩn quốc tế.

Thông tin liên hệ:

  • Hotline: 18001093
  • Email: sales@vietnix.com.vn
  • Địa chỉ: 265 Hồng Lạc, Phường 10, Quận Tân Bình, Thành Phố Hồ Chí Minh.
  • Website: https://vietnix.vn/

Vậy là chúng ta vừa cùng nhau tìm hiểu chi tiết về thứ tự ưu tiên của các toán tử trong Python. Hi vọng qua bài viết này, bạn đã nắm vững được quy tắc này và có thể áp dụng nó một cách hiệu quả trong quá trình lập trình. Việc hiểu rõ thứ tự ưu tiên toán tử sẽ giúp bạn viết code chính xác hơn, tránh những lỗi không đáng có và tối ưu hóa hiệu suất chương trình.

Mọi người cũng đọc

Cao Lê Viết Tiến

PHP Leader
tại
Vietnix

Kết nối với mình qua

Icon Quote
Icon Quote

Học lập trình online cùng vietnix

Học lập trình online cùng Vietnix

PHPXem thêmThu gọn