Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Python

Hàm cmp() trong Python OOP

Lưu ý: cmp() chỉ có trong Python 2. Python 3 đã loại bỏ, thay bằng rich comparison (__lt__, __eq__, v.v.).

Hàm cmp(x, y) (Python 2)

  • Trả về số âm nếu x < y
  • Trả về 0 nếu x == y
  • Trả về số dương nếu x > y
>>> cmp(2, 8)   # -1
>>> cmp(6, 6)   # 0
>>> cmp(4, 1)   # 1
>>> cmp('stackexchange', 'stackoverflow')  # -1

So sánh list với cmp()

list1, list2 = [456, 'xyz'], [789, 'abc']
print(cmp(list1, list2))  # -1
print(cmp(list2, list1))  # 1
list3 = list2 + [896]
print(cmp(list2, list3))  # -1 (list ngắn hơn "nhỏ hơn")

Python 3: Thay thế

# Thay vì cmp(a, b):
(a > b) - (a < b)  # Trả về -1, 0, 1

# Hoặc dùng functools.cmp_to_key cho sorted()
from functools import cmp_to_key
sorted_list = sorted(items, key=cmp_to_key(custom_compare))