Các toán tử so sánh có thể được ghép trong python, do đó, ví dụ x < y < z
phải cho kết quả là (x < y) and (y < z)
, ngoại trừ y
được đảm bảo chỉ được đánh giá một lần.Làm thế nào để giải thích cây cú pháp trừu tượng của các hoạt động so sánh xích?
Cây cú pháp trừu tượng của hoạt động này trông giống như:
>>> ast.dump(ast.parse('0 < 1 < 2'), annotate_fields=0)
'Module([Expr(Compare(Num(0), [Lt(), Lt()], [Num(1), Num(2)]))])'
Khá in:
Module
Expr
Compare
Num
Lt
Lt
Num
Num
Nhưng có vẻ như để phân tích như một cái gì đó giống như 0 < < 1 2
và tôi không chắc chắn làm thế nào để dung hòa mà với kết quả hợp lý của một cái gì đó như 0 < 1 and 1 < 2
.
Làm cách nào để có thể giải thích được sự so sánh chuỗi?
tôi sẽ viết thủ tục 'Compare()' một chút khác biệt. Xem [câu trả lời của tôi] (http://stackoverflow.com/a/40431833/6394138). – Leon