Tôi đang sử dụng vỏ Python 3.5.2. Tôi đang bối rối về lý do tại sao nó hoạt động như vậy?Đặt hàng hoạt động Không chính xác?
5 > 5**2
False
5 > 5**2 == False
False
(5 > 5**2) == False
True
Thứ tự của các hoạt động xác định rằng ** được thực hiện trước> trước khi == để hoạt động.
Bạn luôn có thể sử dụng dấu ngoặc đơn để ghi đè chaining này: '(5> 5 ** 2) == false' =>' TRUE' – brianpck
@brianpck Đúng vậy, nhưng tại sao bạn đã bao giờ muốn điều đó? So sánh sẽ luôn mang lại giá trị boolean (trừ khi quá tải theo cách không chính thống) và so sánh boolean với ví dụ: Đúng hay sai là thực hành xấu ngay từ đầu. Thay vì '(5> 5 ** 2) == Sai', chỉ cần' không (5> 5 ** 2) ', hoặc' 5 <= 5 ** 2' –
@tobias_k, được cấp, nhưng tiền đề của OP (Tôi hy vọng!) đã được thử nghiệm, không phải giải quyết vấn đề thực tế. Tôi đã viết * nhiều * mã weirder chỉ để có được một xử lý về các tính năng ngôn ngữ. – brianpck