2017-12-20 98 views

Trả lời

16

Điều này là do các nhà khai thác chaining phenomenon. Các pydoc giải thích nó như:

So sánh có thể được xích tùy tiện, ví dụ, x < y < = z tương đương để x < y và y < = z, ngoại trừ việc y được đánh giá chỉ một lần (nhưng trong cả hai trường hợp thì z không được đánh giá gì cả khi x < y bị phát hiện là sai).

Và nếu bạn nhìn vào precedence của ==!= nhà khai thác, bạn sẽ nhận thấy rằng họ có cùng ưu tiên và do đó áp dụng đối với các hiện tượng chaining.

Vì vậy, về cơ bản những gì sẽ xảy ra:

>>> 1==2 
=> False 
>>> 2!=3 
=> True 

>>> (1==2) and (2!=3) 
    # False and True 
=> False 
3

Một xích biểu hiện như A op B op C nơi op được toán tử so sánh được trái ngược với C đánh giá là (https://docs.python.org/2.3/ref/comparisons.html):

A op B and B op C 

Vì vậy, ví dụ bạn được đánh giá như

1 == 2 and 2 != 3 

kết quả là False.

Các vấn đề liên quan