Trong các ngôn ngữ lập trình, việc kiểm tra từ hai điều kiện trở lên là điều rất phổ biến. Giả sử chúng ta muốn kiểm tra điều kiện dưới đây:

a < b < c

Cú pháp phổ biến nhất để làm điều đó là như sau:

if a < b and b < c :
   {...}

Trong Python, có một cách tốt hơn để viết điều này bằng cách sử dụng kết hợp toán tử so sánh. Việc xâu chuỗi các toán tử có thể được viết như sau:

if a < b < c :
    {.....}

Theo tính kết hợp và ưu tiên trong Python, tất cả các hoạt động so sánh trong Python đều có cùng mức độ ưu tiên, thấp hơn bất kỳ hoạt động số học, dịch chuyển hoặc bitwise nào. Cũng không giống như C, các biểu thức như a<b <c có cách hiểu thông thường được quy ước trong trong toán học.

Danh sách các toán tử so sánh trong Python:

">" | "<" | "==" | ">=" | "<=" | "!=" | "is" ["not"] | ["not"] "in"

Chuỗi các toán tử so sánh:

  1. So sánh mang lại giá trị boolean: Đúng hoặc Sai.
  2. So sánh có thể được xâu chuỗi tùy ý. Ví dụ:
x < y <= z is equivalent to x < y and y <= z, 

Ngoại trừ việc y chỉ được đánh giá một lần.
(Nhưng trong cả hai trường hợp z hoàn toàn không được đánh giá khi x <y được đánh giá là sai).

  1. Thực tế, nếu a, b, c, …,y, z là các biểu thức và op1, op2, …,opN là các toán tử so sánh, thì op1 b op2 … y opN z sẽ tương đương với a op1 b và b op2 c và … y opN z, ngoại trừ mỗi biểu thức được đánh giá nhiều nhất một lần.
  2. Tương tự,
a op1 b op2 c 

không chứa bất kỳ loại so sánh nào giữa a và c, vì vậy

a < b > c

là hoàn toàn hợp lý.


# Python code to illustrate 
# chaining comparison operators 
x = 5
print(1 < x < 10) 
print(10 < x < 20 ) 
print(x < 10 < x*10 < 100) 
print(10 > x <= 9) 
print(5 == x > 4)

Kết quả:

True
False
True
True
True

Một ví dụ khác:


# Python code to illustrate 
# chaining comparison operators 
a, b, c, d, e, f = 0, 5, 12, 0, 15, 15
exp1 = a <= b < c > d is not e is f 
exp2 = a is d > f is not c 
print(exp1) 
print(exp2) 

Kết quả:

True
False

Nguồn và Tài liệu tiếng anh tham khảo:

Tài liệu từ cafedev:

Nếu bạn thấy hay và hữu ích, bạn có thể tham gia các kênh sau của cafedev để nhận được nhiều hơn nữa:

Chào thân ái và quyết thắng!

Đăng ký kênh youtube để ủng hộ Cafedev nha các bạn, Thanks you!