Sáng nay, tôi thấy mình viết cái gì đó như:các quy tắc liên quan đến chaining của là gì "==" và bằng Python
if (a == b == c):
# do something
Và rất ngạc nhiên rằng nó đã cho tôi kết quả mong đợi.
Tôi nghĩ rằng nó sẽ hoạt động như:
if ((a == b) == c):
# do something
Nhưng nó rõ ràng là không. Có vẻ như Python đang xử lý câu lệnh đầu tiên khác với câu lệnh thứ hai, điều này rất hay nhưng tôi không thể tìm thấy bất kỳ tài liệu hoặc giải thích nào về vấn đề này.
Tôi đã thử nghiệm và nhận điều này:
In [1]: 2 == 2 == 2
Out[1]: True
In [2]: (2 == 2) == 2
Out[2]: False
sẽ chăm sóc một người nào đó để giải thích cho tôi những gì là các quy tắc liên quan đến như vậy "chain" của ==
(hoặc !=
)?
Cảm ơn bạn rất nhiều.
Chính thức, 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 c ... y opN z 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. @ http://docs.python.org/reference/expressions.html – georg
Gọn gàng, eh? Bạn cũng có thể làm 'a Thomas
Không phải là tôi quan tâm nhiều, nhưng người giải quyết có thể giải thích lý do tại sao anh ấy bị bỏ phiếu không? – ereOn