Tổng quan chi tiết về các toán tử trong Python

Giới thiệu về Toán tử

Trong lập trình, toán tử (operators) là các ký hiệu đặc biệt dùng để thực hiện các thao tác tính toán hoặc xử lý logic trên các biến và giá trị (thường được gọi là toán hạng). Python cung cấp một hệ thống các loại toán tử phong phú hỗ trợ cho các tác vụ từ số học cơ bản đến thao tác bit phức tạp.

Các loại toán tử chính trong Python bao gồm:

  • Toán tử số học (Arithmetic Operators)
  • Toán tử so sánh (Comparison Operators)
  • Toán tử gán (Assignment Operators)
  • Toán tử logic (Logical Operators)
  • Toán tử thao tác bit (Bitwise Operators)
  • Toán tử thành viên (Membership Operators)
  • Toán tử danh tính (Identity Operators)

1. Toán tử số học (Arithmetic Operators)

Các toán tử này được sử dụng để thực hiện các phép tính toán học phổ biến như cộng, trừ, nhân, chia.

Xét ví dụ sau với biến x = 15 và biến y = 4:

#!/usr/bin/env python3

x = 15
y = 4

# Phép cộng
ket_qua = x + y
print(f"Tong ({x} + {y}): {ket_qua}")

# Phép trừ
ket_qua = x - y
print(f"Hieu ({x} - {y}): {ket_qua}")

# Phép nhân
ket_qua = x * y
print(f"Tich ({x} * {y}): {ket_qua}")

# Phép chia (luon tra ve so thuc)
ket_qua = x / y
print(f"Chia ({x} / {y}): {ket_qua}")

# Phép chia lấy phần nguyên
ket_qua = x // y
print(f"Chia nguyen ({x} // {y}): {ket_qua}")

# Phép chia lấy phần dư
ket_qua = x % y
print(f"Chia du ({x} % {y}): {ket_qua}")

# Phép lũy thừa
ket_qua = x ** y
print(f"Luy thua ({x} ** {y}): {ket_qua}")

Kết quả thực thi:

Tong (15 + 4): 19
Hieu (15 - 4): 11
Tich (15 * 4): 60
Chia (15 / 4): 3.75
Chia nguyen (15 // 4): 3
Chia du (15 % 4): 3
Luy thua (15 ** 4): 50625

2. Toán tử so sánh (Comparison Operators)

Toán tử so sánh được dùng để so sánh hai giá trị, kết quả trả về luôn là dạng boolean (True hoặc False).

Ví dụ sử dụng diem_chuan = 8diem_hoc_vien = 7.5:

#!/usr/bin/env python3

diem_chuan = 8
diem_hoc_vien = 7.5

if diem_hoc_vien == diem_chuan:
    print("1. Diem so bang nhau")
else:
    print("1. Diem so khong bang nhau")

if diem_hoc_vien != diem_chuan:
    print("2. Diem so khac nhau")
else:
    print("2. Diem so giong nhau")

if diem_hoc_vien < diem_chuan:
    print("3. Diem hoc vien thap hon diem chuan")
else:
    print("3. Diem hoc vien cao hon or bang diem chuan")

if diem_hoc_vien > diem_chuan:
    print("4. Diem hoc vien cao hon diem chuan")
else:
    print("4. Diem hoc vien thap hon hoac bang diem chuan")

if diem_hoc_vien <= diem_chuan:
    print("5. Diem hoc vien nho hon hoac bang diem chuan")

if diem_hoc_vien >= diem_chuan:
    print("6. Diem hoc vien lon hon hoac bang diem chuan")

Kết quả:

1. Diem so khong bang nhau
2. Diem so khac nhau
3. Diem hoc vien thap hon diem chuan
4. Diem hoc vien thap hon hoac bang diem chuan
5. Diem hoc vien nho hon hoac bang diem chuan

3. Toán tử gán (Assignment Operators)

Ngoài việc gán giá trị cơ bản (=), Python hỗ trợ các toán tử gán kết hợp để rút gọn phép tính và gán trong một dòng lệnh.

#!/usr/bin/env python3

p = 10
print(f"1. Gia tri ban dau p: {p}")

p += 5  # Tuong duong p = p + 5
print(f"2. Sau khi p += 5: {p}")

p *= 2  # Tuong duong p = p * 2
print(f"3. Sau khi p *= 2: {p}")

p /= 4  # Tuong duong p = p / 4
print(f"4. Sau khi p /= 4: {p}")

p %= 3  # Tuong duong p = p % 3
print(f"5. Sau khi p %= 3: {p}")

p **= 2 # Tuong duong p = p ** 2
print(f"6. Sau khi p **= 2: {p}")

p //= 3 # Tuong duong p = p // 3
print(f"7. Sau khi p //= 3: {p}")

Kết quả:

1. Gia tri ban dau p: 10
2. Sau khi p += 5: 15
3. Sau khi p *= 2: 30
4. Sau khi p /= 4: 7.5
5. Sau khi p %= 3: 1.5
6. Sau khi p **= 2: 2.25
7. Sau khi p //= 3: 0.0

Toán tử Hải mã (Walrus Operator) :=

Được giới thiệu từ Python 3.8, toán tử := cho phép gán giá trị cho biến ngay trong biểu thức điều kiện. Điều này hữu ích khi cần tái sử dụng kết quả của một biểu thức tốn kém.

# Cách viết truyền thống
danh_sach = [1, 2, 3]
do_dai = len(danh_sach)
if do_dai > 2:
    print(f"Do dai danh sach: {do_dai}")

# Sử dụng toán tử Hải mã
if (n := len(danh_sach)) > 2:
    print(f"Do dai danh sach (su dung :=): {n}")

4. Toán tử thao tác bit (Bitwise Operators)

Các toán tử này hoạt động trực tiếp trên các bit của số nguyên (dạng nhị phân).

Giả sử a = 10 (nhị phân 0000 1010) và b = 6 (nhị phân 0000 0110).

#!/usr/bin/env python3

a = 10  # 1010
b = 6   # 0110

# AND: Phép AND bit, bit kết quả là 1 nếu cả 2 bit đầu vào là 1
# 1010 & 0110 = 0010 (2)
c = a & b
print(f"1. {a} & {b} = {c}")

# OR: Phép OR bit, bit kết quả là 1 nếu 1 trong 2 bit đầu vào là 1
# 1010 | 0110 = 1110 (14)
c = a | b
print(f"2. {a} | {b} = {c}")

# XOR: Phép XOR bit, bit kết quả là 1 nếu 2 bit đầu vào khác nhau
# 1010 ^ 0110 = 1100 (12)
c = a ^ b
print(f"3. {a} ^ {b} = {c}")

# NOT: Phép đảo bit (số bù 2)
c = ~a
print(f"4. ~{a} = {c}")

# Dịch trái (Left Shift): Dịch bit sang trái n lần (nhân với 2^n)
# 1010 << 1 = 10100 (20)
c = a << 1
print(f"5. {a} << 1 = {c}")

# Dịch phải (Right Shift): Dịch bit sang phải n lần (chia nguyên cho 2^n)
# 1010 >> 1 = 0101 (5)
c = a >> 1
print(f"6. {a} >> 1 = {c}")

5. Toán tử logic (Logical Operators)

Được sử dụng để kết hợp các biểu thức điều kiện. Python sử dụng các từ khóa and, or, và not.

Toán tử Mô tả Ví dụ
and Trả về True nếu cả hai điều kiện đều đúng. x > 5 and x < 10
or Trả về True nếu ít nhất một điều kiện đúng. x == 5 or x == 10
not Đảo ngược giá trị boolean, True thành False và ngược lại. not(x < 5)
#!/usr/bin/env python3

x = 10
y = 20

# AND logic
if x > 5 and y < 25:
    print("1. Cả hai điều kiện đều đúng")

# OR logic
if x > 15 or y < 25:
    print("2. Ít nhất một điều kiện đúng")

# NOT logic
if not (x > 15):
    print("3. Điều kiện (x > 15) là sai")

6. Toán tử thành viên (Membership Operators)

Python cung cấp toán tử innot in để kiểm tra sự hiện diện của một giá trị trong chuỗi, danh sách, tuple, hoặc bộ từ điển.

#!/usr/bin/env python3

mon_hoc = ["Toan", "Ly", "Hoa", "Van"]

tra_cuu = "Tin"
if tra_cuu in mon_hoc:
    print(f"1. {tra_cvu} co trong danh sach mon hoc")
else:
    print(f"1. {tra_cvu} khong co trong danh sach mon hoc")

tra_cvu = "Van"
if tra_cvu not in mon_hoc:
    print(f"2. {tra_cvu} khong co trong danh sach mon hoc")
else:
    print(f"2. {tra_cvu} co trong danh sach mon hoc")

7. Toán tử danh tính (Identity Operators)

Các toán tử isis not được sử dụng để kiểm tra xem hai biến có tham chiếu đến cùng một đối tượng trong bộ nhớ hay không (khác với == chỉ so sánh giá trị).

#!/usr/bin/env python3

danh_sach_a = [1, 2, 3]
danh_sach_b = [1, 2, 3]
danh_sach_c = danh_sach_a

# So sanh danh tính (is)
if danh_sach_a is danh_sach_c:
    print("1. danh_sach_a va danh_sach_c cung mot doi tuong")
else:
    print("1. danh_sach_a va danh_sach_c khac doi tuong")

if danh_sach_a is danh_sach_b:
    print("2. danh_sach_a va danh_sach_b cung mot doi tuong")
else:
    print("2. danh_sach_a va danh_sach_b khac doi tuong")

# So sanh gia tri (==)
if danh_sach_a == danh_sach_b:
    print("3. Noi dung cua danh_sach_a va danh_sach_b giong nhau")

print(f"ID danh_sach_a: {id(danh_sach_a)}")
print(f"ID danh_sach_b: {id(danh_sach_b)}")

8. Độ ưu tiên của toán tử (Operator Precedence)

Trong một biểu thức phức tạp chứa nhiều loại toán tử, Python sẽ thực hiện tính toán theo thứ tự ưu tiên. Dưới đây là thứ tự ưu tiên từ cao xuống thấp:

  1. Nhóm dấu ngoặc: ()
  2. Lũy thừa: **
  3. Dao bit, Phủ định (+, -), bitwise NOT (~): +x, -x, ~x
  4. Nhân, Chia, Chia dư, Chia nguyên: *, /, %, //
  5. Cộng, Trừ: +, -
  6. Dịch bit: <<, >>
  7. So sánh (Bitwise): &
  8. So sánh (Bitwise): ^, |
  9. So sánh (Relation): in, not in, is, is not, <, <=, >, >=, !=, ==
  10. Logic NOT: not x
  11. Logic AND: and
  12. Logic OR: or

Đăng vào ngày 23 tháng 6 lúc 16:24