Vì vậy, tôi đang tìm kiếm tại một số code trực tuyến và tôi tình cờ gặp một dòng (tại dòng 286):
if depth > 0 and best <= -MATE_VALUE is None and nullscore > -MATE_VALUE:
Toán tử so sánh và 'là' - ưu tiên toán tử trong python?
Phần tôi đã hiểu biết rắc rối là best <= -MATE_VALUE is None
.
Vì vậy, tôi đã kích hoạt thông dịch viên để xem cách tuyên bố như công việc value1 > value2 is value3
.
Vì vậy, tôi đã cố gắng
>>> 5 > 2 is True
False
>>> (5 > 2) is True
True
>>> 5 > (2 is True)
True
Câu hỏi của tôi
Tại sao 5 > 2 is True
không True
? Và những thứ này thường hoạt động như thế nào?
Cảm ơn.
Tra cứu toán tử chuỗi. Đây thực sự không phải là vấn đề ưu tiên. Việc đầu tiên được xử lý một cách hợp lý như '(5> 2) && (2 là True)', đó là lý do tại sao/cách Python cho phép một cấu trúc 'a
user2864740
http://stackoverflow.com/questions/25753474/python-comparison-operators-chaining-grouping-left-to-right, http://stackoverflow.com/questions/101268/hidden-features-of-python/101945 # 101945, http: // stackoverflow.com/questions/25103085/chaining-is-operator, http://stackoverflow.com/q/6074018/2864740 – user2864740
FWIW, dòng này có vẻ rất lạ với tôi - nó không rõ ràng với tôi khi biểu hiện này sẽ là True. Nếu MATE_VALUE là một số (có lẽ là do '-MATE_VALUE'), thì nó sẽ không bao giờ là None (nếu nó là,' -' sẽ không hoạt động.) Vì vậy, nếu dòng không ném một ngoại lệ, nó sẽ không luôn luôn trở lại sai? – DSM