Tôi có một dòng mã trong tập lệnh của tôi có cả hai toán tử này được xích lại với nhau. Từ tài liệu tham khảo tài liệu BOOLEAN AND có mức ưu tiên thấp hơn COMPARISON GREATER THAN. Tôi nhận được kết quả bất ngờ ở đây trong mã này:Ưu tiên toán tử Python - và lớn hơn
>>> def test(msg, value):
... print(msg)
... return value
>>> test("First", 10) and test("Second", 15) > test("Third", 5)
First
Second
Third
True
Tôi đã chờ đợi thứ hai hoặc thứ ba kiểm tra để xảy ra trước khi nắm tay một, vì >
điều hành có độ ưu tiên cao hơn. Tôi làm gì sai ở đây?
https://docs.python.org/3/reference/expressions.html#operator-precedence
Cách giải thích boolean của giá trị đầu tiên của bạn, '10', cũng đúng. Do đó, '10 và 15> 5 == 10 và (15> 5) == 10 và True == True' – Finwood
Nhưng tại sao thông dịch viên nhận được 10 thông tin trước 15 hoặc 5? Không nên so sánh xảy ra trước khi kiểm tra boolean? –
'test (" First ", 10) và test (" Second ", 15)> test (" Third ", 5)' tương đương với 'test (" First ", 10) và (test (" Second ", 15)> test ("Third", 5)) 'Ngoài ra Python đánh giá' và' [lazily] (https://docs.python.org/3/reference/expressions.html#boolean-operations) – Alik