Hàm cmp[] trong Python 2 trả về dấu hiệu chỉ sự khác nhau giữa hai số: -1 nếu x < y, 0 nếu x == y, hoặc 1 nếu x > y. Lưu ý: Hàm cmp[] chỉ có trong Python 2, nó đã bị loại bỏ trong Python 3. Cú pháp của hàm cmp[] trong Python 2: Tham số: x: Đây là một biểu thức số. y: Đây cũng là một biểu thức số. Ví dụ sau minh
họa cách sử dụng của hàm cmp[] trong Python 2.Cú pháp
print "cmp[80, 100] : ", cmp[80, 100]
print "cmp[180, 100] : ", cmp[180, 100]
print "cmp[-80, 100] : ", cmp[-80, 100]
print "cmp[80, -100] : ", cmp[80, -100]
Chạy chương trình Python 2 trên sẽ cho kết quả:
cmp[80, 100] : -1 cmp[180, 100] : 1 cmp[-80, 100] : -1 cmp[80, -100] : 1
Ví dụ hàm cmp[] trong Python 3
Hàm cmp[] đã bị loại bỏ trong Python 3, vậy biểu thức này [a > b] - [a < b]
a = 100 b = 100 print ["cmp[80, 100] : ", [a > b] - [a < b]] a = 80 b = 100 print ["cmp[80, 100] : ", [a > b] - [a < b]] a = -80 b = -100 print ["cmp[80, 100] : ", [a > b] - [a < b]]
Chạy chương trình Python 2 trên sẽ cho kết quả:
cmp[80, 100] : 0 cmp[80, 100] : -1 cmp[80, 100] : 1
answer
63
Như đã đề cập trong các nhận xét, cmp
không tồn tại trong Python 3. Nếu bạn thực sự muốn nó, bạn có thể tự xác định nó:
def cmp[a, b]:
return [a > b] - [a < b]
được lấy từ Bản gốc có gì mới trong Python 3.0 . Tuy nhiên, nó khá hiếm - mặc dù không phải là chưa từng nghe - nhưng nó thực sự cần thiết, vì vậy bạn có thể muốn nghĩ xem đó có thực sự là cách tốt nhất để làm bất cứ điều gì bạn muốn hay không.
63 hữu ích 1 bình luận chia sẻ
answer
9
Trong Python 3.x bạn có thể import operator
và điều hành sử dụng mô-đun của eq[]
, lt[]
, vv ... thay vìcmp[]
9 hữu ích 0 bình luận chia sẻ
answer
1
Khi cần ký hiệu, có lẽ cách thay thế an toàn nhất là sử dụng math.copysign:
import math
ang = -2
# alternative for cmp[ang, 0]:
math.copysign[1, ang]
# Result: -1
Đặc biệt nếu ang thuộc loại np.float64 vì toán tử '-' bị khấu hao. Thí dụ:
import numpy as np
def cmp_0[a, b]:
return [a > b] - [a < b]
ang = np.float64[-2]
cmp_0[ang, 0]
# Result:
# DeprecationWarning: numpy boolean subtract, the `-` operator, is deprecated,
# use the bitwise_xor, the `^` operator, or the logical_xor function instead.
thay vào đó người ta có thể sử dụng:
def cmp_0[a, b]:
return bool[a > b] - bool[a < b]
ang = np.float64[-2]
cmp[ang, 0]
# Result: -1
1 hữu ích 0 bình luận chia sẻ
answer
0
Nếu a hoặc b là một đối tượng lớp, thì các câu trả lời trên sẽ có lỗi biên dịch như sau: Ví dụ: a là Class Clock: File "01_ClockClass_lab16.py", dòng 14, trong cmp return [a> b] - [a int [b]] - [int [a]