Python thực hiện những điều đặc biệt với các phép so sánh theo chuỗi.
Những điều sau được đánh giá khác nhau:
x > y > z # in this case, if x > y evaluates to true, then
# the value of y is being used to compare, again,
# to z
(x > y) > z # the parenth form, on the other hand, will first
# evaluate x > y. And, compare the evaluated result
# with z, which can be "True > z" or "False > z"
Trong cả hai trường hợp, nếu là so sánh đầu tiên False, phần còn lại của câu lệnh sẽ không được xem xét.
Đối với trường hợp cụ thể của bạn,
1 in [] in 'a' # this is false because 1 is not in []
(1 in []) in a # this gives an error because we are
# essentially doing this: False in 'a'
1 in ([] in 'a') # this fails because you cannot do
# [] in 'a'
Ngoài ra, để chứng minh quy tắc đầu tiên ở trên, đây là các câu lệnh đánh giá thành True.
1 in [1,2] in [4,[1,2]] # But "1 in [4,[1,2]]" is False
2 < 4 > 1 # and note "2 < 1" is also not true
Mức độ phổ biến của toán tử python: http://docs.python.org/reference/expressions.html#summary
if a < b < c:và làm cho nó hoạt động một cách trực quan