Hot deal hosting vps vietnix tháng 2Hot deal hosting vps vietnix tháng 2
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
6 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ử.

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ừ (-).

Lời kết

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