Hướng dẫn what is __ cmp __ in python? - __ cmp __ trong python là gì?

Trong Python3, sáu nhà khai thác so sánh phong phú

__lt__(self, other) 
__le__(self, other) 
__eq__(self, other) 
__ne__(self, other) 
__gt__(self, other) 
__ge__(self, other) 

phải được cung cấp riêng lẻ. Điều này có thể được viết tắt bằng cách sử dụng functools.total_ordering.

Tuy nhiên, điều này hóa ra khá không thể đọc được và không thực tế hầu hết thời gian. Tuy nhiên, bạn phải đặt các phần mã tương tự trong 2 func - hoặc sử dụng một func trợ giúp nữa.

Vì vậy, chủ yếu tôi thích sử dụng lớp mixin PY3__cmp__ được hiển thị bên dưới. Điều này thiết lập lại khung phương pháp __cmp__ duy nhất, đã và khá rõ ràng và thực tế trong hầu hết các trường hợp. Người ta vẫn có thể ghi đè các so sánh phong phú được chọn.

Ví dụ của bạn sẽ trở thành:

 class point(PY3__cmp__):
      ... 
      # unchanged code

Lớp mixin py3__cmp__:

PY3 = sys.version_info[0] >= 3
if PY3:
    def cmp(a, b):
        return (a > b) - (a < b)
    # mixin class for Python3 supporting __cmp__
    class PY3__cmp__:   
        def __eq__(self, other):
            return self.__cmp__(other) == 0
        def __ne__(self, other):
            return self.__cmp__(other) != 0
        def __gt__(self, other):
            return self.__cmp__(other) > 0
        def __lt__(self, other):
            return self.__cmp__(other) < 0
        def __ge__(self, other):
            return self.__cmp__(other) >= 0
        def __le__(self, other):
            return self.__cmp__(other) <= 0
else:
    class PY3__cmp__:
        pass

Tóm tắt

__cmp__(self,other)

Bất kỳ so sánh nào, khi phương pháp đặc biệt cụ thể của nó (

 class point(PY3__cmp__):
      ... 
      # unchanged code
0,
 class point(PY3__cmp__):
      ... 
      # unchanged code
1, v.v.) không có hoặc trả lại
 class point(PY3__cmp__):
      ... 
      # unchanged code
2, gọi
 class point(PY3__cmp__):
      ... 
      # unchanged code
3
 class point(PY3__cmp__):
      ... 
      # unchanged code
4
 class point(PY3__cmp__):
      ... 
      # unchanged code
5
 class point(PY3__cmp__):
      ... 
      # unchanged code
6 Thay vào đó, cũng như chức năng tích hợp
 class point(PY3__cmp__):
      ... 
      # unchanged code
7 ________ 13, ________ 15
 class point(PY3__cmp__):
      ... 
      # unchanged code
6. __cmp__ sẽ trả về
PY3 = sys.version_info[0] >= 3
if PY3:
    def cmp(a, b):
        return (a > b) - (a < b)
    # mixin class for Python3 supporting __cmp__
    class PY3__cmp__:   
        def __eq__(self, other):
            return self.__cmp__(other) == 0
        def __ne__(self, other):
            return self.__cmp__(other) != 0
        def __gt__(self, other):
            return self.__cmp__(other) > 0
        def __lt__(self, other):
            return self.__cmp__(other) < 0
        def __ge__(self, other):
            return self.__cmp__(other) >= 0
        def __le__(self, other):
            return self.__cmp__(other) <= 0
else:
    class PY3__cmp__:
        pass
3 nếu
 class point(PY3__cmp__):
      ... 
      # unchanged code
3 nhỏ hơn
 class point(PY3__cmp__):
      ... 
      # unchanged code
5,
PY3 = sys.version_info[0] >= 3
if PY3:
    def cmp(a, b):
        return (a > b) - (a < b)
    # mixin class for Python3 supporting __cmp__
    class PY3__cmp__:   
        def __eq__(self, other):
            return self.__cmp__(other) == 0
        def __ne__(self, other):
            return self.__cmp__(other) != 0
        def __gt__(self, other):
            return self.__cmp__(other) > 0
        def __lt__(self, other):
            return self.__cmp__(other) < 0
        def __ge__(self, other):
            return self.__cmp__(other) >= 0
        def __le__(self, other):
            return self.__cmp__(other) <= 0
else:
    class PY3__cmp__:
        pass
6 nếu
 class point(PY3__cmp__):
      ... 
      # unchanged code
3 bằng
 class point(PY3__cmp__):
      ... 
      # unchanged code
5 hoặc
PY3 = sys.version_info[0] >= 3
if PY3:
    def cmp(a, b):
        return (a > b) - (a < b)
    # mixin class for Python3 supporting __cmp__
    class PY3__cmp__:   
        def __eq__(self, other):
            return self.__cmp__(other) == 0
        def __ne__(self, other):
            return self.__cmp__(other) != 0
        def __gt__(self, other):
            return self.__cmp__(other) > 0
        def __lt__(self, other):
            return self.__cmp__(other) < 0
        def __ge__(self, other):
            return self.__cmp__(other) >= 0
        def __le__(self, other):
            return self.__cmp__(other) <= 0
else:
    class PY3__cmp__:
        pass
9 nếu
 class point(PY3__cmp__):
      ... 
      # unchanged code
3 lớn hơn
 class point(PY3__cmp__):
      ... 
      # unchanged code
5. Khi __cmp__ cũng vắng mặt, so sánh thứ tự (
__cmp__(self,other)
3,
__cmp__(self,other)
4,
__cmp__(self,other)
5,
__cmp__(self,other)
6) tăng các ngoại lệ. So sánh bình đẳng (
__cmp__(self,other)
7,
__cmp__(self,other)
8), trong trường hợp này, trở thành kiểm tra danh tính:
 class point(PY3__cmp__):
      ... 
      # unchanged code
3
Syntax:
cmp(a, b)
Parameters:
a and b are the two numbers in which the comparison is being done. 
Returns:
-1 if ab
0
 class point(PY3__cmp__):
      ... 
      # unchanged code
5 đánh giá
Syntax:
cmp(a, b)
Parameters:
a and b are the two numbers in which the comparison is being done. 
Returns:
-1 if ab
2
 class point(PY3__cmp__):
      ... 
      # unchanged code
3
Syntax:
cmp(a, b)
Parameters:
a and b are the two numbers in which the comparison is being done. 
Returns:
-1 if ab
4
 class point(PY3__cmp__):
      ... 
      # unchanged code
5
 class point(PY3__cmp__):
      ... 
      # unchanged code
6 (tức là,
 class point(PY3__cmp__):
      ... 
      # unchanged code
3 ____.

Cải thiện bài viết

Lưu bài viết

  • Đọc
  • Bàn luận
  • Cải thiện bài viết

    Lưu bài viết

    Đọc
    cmp() does not work in python 3.x. You might want to see list comparison in Python.

    Syntax:
    cmp(a, b)
    Parameters:
    a and b are the two numbers in which the comparison is being done. 
    Returns:
    -1 if ab
    

    Bàn luận

    Phương thức CMP () trong Python 2.x so sánh hai số nguyên và trả về -1, 0, 1 theo so sánh.cmp () không hoạt động trong Python 3.x. Bạn có thể muốn xem danh sách so sánh trong Python.

    -1
    0 
    1
    
    6
    -1
    0 
    1
    
    7
    -1
    0 
    1
    
    8
    -1
    0 
    1
    
    9

    -1
    0 
    1
    
    0
    -1
    0 
    1
    
    1 ________ 29 & nbsp;

    Phương thức CMP () trong Python 2.x so sánh hai số nguyên và trả về -1, 0, 1 theo so sánh.cmp () không hoạt động trong Python 3.x. Bạn có thể muốn xem danh sách so sánh trong Python.

    -1
    0 
    1
    
    6
    -1
    0 
    1
    
    7
    -1
    0 
    1
    
    8
    -1
    0 
    1
    
    9

    -1
    0 
    1
    
    0
    -1
    0 
    1
    
    1 ________ 29 & nbsp;

    Phương thức CMP () trong Python 2.x so sánh hai số nguyên và trả về -1, 0, 1 theo so sánh.cmp () không hoạt động trong Python 3.x. Bạn có thể muốn xem danh sách so sánh trong Python.

    -1
    0 
    1
    
    6
    -1
    0 
    1
    
    7
    -1
    0 
    1
    
    8functools.total_ordering9

    Output:

    -1
    0 
    1
    

    -1
    0 
    1
    
    0
    -1
    0 
    1
    
    1 ________ 29 & nbsp;
    Program to check if a number is even or odd using cmp function.

    -1
    0 
    1
    
    3
    -1
    0 
    1
    
    1 ________ 55 & nbsp;

    -1
    0 
    1
    
    0
    -1
    0 
    1
    
    1
    -1
    0 
    1
    
    5

    -1
    0 
    1
    
    0
    -1
    0 
    1
    
    1 functools.total_ordering2

    Ứng dụng thực tế: Chương trình kiểm tra xem một số chẵn hoặc lẻ bằng hàm CMP.

    __cmp__1

    -1
    0 
    1
    
    6__cmp__3

    __cmp__4__cmp__5

    __cmp__1

    -1
    0 
    1
    
    6__cmp__

    Cách tiếp cận: So sánh 0 và n%2, nếu nó trả về 0, thì nó thậm chí là, nó là lẻ của nó.

    Ứng dụng thực tế: Chương trình kiểm tra xem một số chẵn hoặc lẻ bằng hàm CMP.

    __cmp__1

    -1
    0 
    1
    
    6__cmp__3

    __cmp__4__cmp__5

    __cmp__1

    -1
    0 
    1
    
    6__cmp__

    Output:

    even
    odd
    

    Phương thức __ eq __ trong Python là gì?

    Bản tóm tắt.Thực hiện phương thức Python __eq__ để xác định logic bình đẳng để so sánh hai đối tượng bằng toán tử bằng nhau (==)define the equality logic for comparing two objects using the equal operator ( == )

    Tại sao sử dụng danh sách CMP 1 và 2 trong Python?

    Hàm cmp () là một phương thức tích hợp trong python được sử dụng để so sánh các yếu tố của hai danh sách.Hàm cũng được sử dụng để so sánh hai phần tử và trả về một giá trị dựa trên các đối số được truyền.Giá trị này có thể là 1, 0 hoặc -1.to compare the elements of two lists. The function is also used to compare two elements and return a value based on the arguments passed. This value can be 1, 0 or -1.

    Tại sao chúng tôi sử dụng CMP List1 List2 trong Python?

    Hàm này lấy 2 danh sách làm đầu vào và kiểm tra xem danh sách đối số đầu tiên lớn hơn, bằng hoặc nhỏ hơn danh sách đối số thứ hai.Tham số: list1: Danh sách đối số đầu tiên được so sánh.List2: Danh sách đối số thứ hai được so sánh.checks if the first argument list is greater, equal or smaller than the second argument list. Parameters : list1 : The first argument list to be compared. list2 : The second argument list to be compared.

    Chức năng của CMP là gì?

    Một CMP được sử dụng để kiểm tra một số chức năng và quy trình cơ thể, bao gồm: Sức khỏe gan và thận.Lượng đường trong máu.Mức protein máu.to check several body functions and processes, including: Liver and kidney health. Blood sugar levels. Blood protein levels.