Trong bất kỳ ngôn ngữ lập trình nào, toán tử (operator) đều là thành phần cốt lõi để thao tác dữ liệu, xây dựng biểu thức, và kiểm soát luồng chương trình. Với Python, toán tử không chỉ gói gọn trong những phép toán số học quen thuộc như cộng, trừ, nhân, chia, mà còn mở rộng ra nhiều nhóm khác: so sánh, gán, logic, kiểm tra thành viên, nhận dạng, thậm chí cho phép lập trình viên tự định nghĩa cách hoạt động của chúng trong các lớp (operator overloading).
Bài viết này sẽ giúp bạn hiểu sâu về toán tử trong Python, từ những khái niệm cơ bản đến các ứng dụng nâng cao, đồng thời chỉ ra các lỗi thường gặp và cách tránh. Qua đó, bạn sẽ có nền tảng vững chắc để viết code Python chính xác, ngắn gọn và dễ bảo trì hơn.
2. Khái niệm về toán tử
Toán tử là ký hiệu hoặc từ khóa đặc biệt dùng để thực hiện phép toán trên các toán hạng (operands). Một toán hạng có thể là số, chuỗi, list, biến hoặc thậm chí là một đối tượng.
Ví dụ:
a = 10
b = 3
print(a + b) # 13
print(a > b) # True
Trong biểu thức a + b
, +
là toán tử, còn a
và b
là toán hạng.
3. Các loại toán tử trong Python
3.1. Toán tử số học (Arithmetic Operators)
Python hỗ trợ:
+
: cộng-
: trừ*
: nhân/
: chia (trả về float)%
: chia lấy dư**
: lũy thừa//
: chia lấy phần nguyên
Ví dụ:
print(10 / 3) # 3.333...
print(10 // 3) # 3
print(2 ** 5) # 32
Lưu ý: phép chia cho 0 sẽ sinh lỗi ZeroDivisionError
.
3.2. Toán tử so sánh (Comparison Operators)
Các toán tử: ==
, !=
, <
, >
, <=
, >=
.
print(5 == 5) # True
print(5 != 3) # True
print("abc" < "abd") # True (so sánh theo thứ tự Unicode)
Đặc biệt:
print(1 == 1.0) # True
print(1 is 1.0) # False
Vì ==
so sánh giá trị, còn is
so sánh địa chỉ bộ nhớ.
3.3. Toán tử gán (Assignment Operators)
Ngoài =
, Python hỗ trợ gán kết hợp:
+=
,-=
,*=
,/=
,//=
,**=
,%=
&=
,|=
,^=
,>>=
,<<=
x = 5
x += 3 # tương đương x = x + 3
print(x) # 8
⚠️ Lưu ý: khi gán biến tham chiếu đến đối tượng có thể thay đổi (mutable), cả hai biến sẽ cùng tham chiếu đến một vùng nhớ.
3.4. Toán tử logic (Logical Operators)
Python có 3 toán tử logic: and
, or
, not
.
Ví dụ:
a = True
b = False
print(a and b) # False
print(a or b) # True
print(not a) # False
Short-circuit evaluation:
x and y
trả vềy
nếux
là True, ngược lại trả vềx
.x or y
trả vềx
nếux
là True, ngược lại trả vềy
.
print(0 and 5) # 0
print(0 or 5) # 5
3.5. Toán tử bitwise (Bitwise Operators)
Thao tác trên số nguyên nhị phân:
&
(AND)|
(OR)^
(XOR)~
(NOT)<<
(dịch trái)>>
(dịch phải)
Ví dụ:
a = 6 # 110
b = 3 # 011
print(a & b) # 2 (010)
print(a | b) # 7 (111)
print(a ^ b) # 5 (101)
Ứng dụng: xử lý cờ (flags), nén dữ liệu, tối ưu hệ thống.
3.6. Toán tử thành viên (Membership Operators)
in
,not in
.
numbers = [1, 2, 3]
print(2 in numbers) # True
print(5 not in numbers) # True
⚠️ Với dictionary: in
chỉ kiểm tra key.
d = {"a": 1, "b": 2}
print("a" in d) # True
print(1 in d) # False
3.7. Toán tử nhận dạng (Identity Operators)
is
,is not
.
x = [1, 2, 3]
y = x
z = [1, 2, 3]
print(x is y) # True (cùng tham chiếu)
print(x is z) # False (khác vùng nhớ)
print(x == z) # True (giá trị bằng nhau)
⚠️ Lỗi phổ biến: dùng is
thay ==
để so sánh giá trị.
3.8. Toán tử đặc biệt & Overloading
Python cho phép định nghĩa lại toán tử trong class.
Ví dụ:
class Vector:
def __init__(self, x, y):
self.x = x
self.y = y
def __add__(self, other):
return Vector(self.x + other.x, self.y + other.y)
def __str__(self):
return f"({self.x}, {self.y})"
v1 = Vector(1, 2)
v2 = Vector(3, 4)
print(v1 + v2) # (4, 6)
Ứng dụng: xây dựng class trực quan, hỗ trợ tính toán tự nhiên.
4. Thứ tự ưu tiên toán tử (Operator Precedence)
Một số quy tắc:
()
luôn cao nhất.**
(lũy thừa).*
,/
,//
,%
.+
,-
.- Dịch bit.
- Toán tử so sánh.
- Toán tử logic
not
,and
,or
.
Ví dụ:
print(2 + 3 * 4) # 14
print((2 + 3) * 4) # 20
Luôn dùng ngoặc để tránh nhầm lẫn.
5. Các lỗi thường gặp
- Nhầm
is
và==
.
print([1,2] is [1,2]) # False
print([1,2] == [1,2]) # True
2. Chia cho 0.
3. Dùng /
thay vì //
→ dẫn tới kết quả float không mong muốn.
4. So sánh sai kiểu dữ liệu.
print("5" > 3) # TypeError
5. Dùng toán tử không áp dụng cho kiểu dữ liệu.
6. Ứng dụng thực tế
- Điều kiện phức tạp:
if (age > 18 and city == "Hanoi") or is_admin:
print("Access granted")
- Kiểm tra dữ liệu trong list/dict:
if "python" in skills:
print("Candidate fits the job")
- Bitwise trong bảo mật:
FLAG_READ = 0b001
FLAG_WRITE = 0b010
permission = FLAG_READ | FLAG_WRITE
print(permission & FLAG_WRITE != 0) # True
- Overloading cho class: trực quan hóa dữ liệu vector, ma trận, phân số.
7. Kết luận
Toán tử là nền tảng quan trọng trong Python, giúp xử lý dữ liệu, kiểm soát luồng và xây dựng logic chương trình. Việc nắm vững không chỉ dừng ở các phép toán cơ bản, mà còn ở khả năng phân biệt is
vs ==
, hiểu rõ short-circuit, sử dụng bitwise, và đặc biệt là tận dụng operator overloading trong lập trình hướng đối tượng.
Một lập trình viên giỏi Python là người không chỉ dùng toán tử đúng, mà còn biết kết hợp chúng để viết code ngắn gọn, dễ hiểu và tối ưu.
8. Tài liệu tham khảo (APA Style)
- Python Software Foundation. (2024). operator — Standard operators as functions. In Python 3.12.6 documentation. Retrieved from https://docs.python.org/3/library/operator.html
- Real Python. (n.d.). Operators in Python. Retrieved September 26, 2025, from https://realpython.com
- W3Schools. (n.d.). Python Operators. Retrieved September 26, 2025, from https://www.w3schools.com/python/python_operators.asp