2012-05-03 36 views
7

Tôi nhận ra hôm nay khi viết một số Python mà người ta có thể viết toán tử bất bình đẳng là a!=b hoặc not a==b. Điều này khiến tôi tò mò:Bất bình đẳng Python:! = Vs not ==

  1. Cả hai cách đều hoạt động giống hệt nhau hoặc có một số khác biệt tinh tế không?
  2. Có lý do nào để sử dụng cái này cho người khác không? Là một trong những thường được sử dụng hơn khác?

Trả lời

14
  1. == gọi __eq__(). != gọi __ne__() nếu nó tồn tại, nếu không tương đương với not ==.
  2. Không trừ khi có sự khác biệt trong 1 vấn đề.
7

Lưu ý đến dấu ngoặc đơn của bạn.

>>> not "test" == True 
True 
>>> not "test" and True 
False 

== được ưu tiên hơn not. Nhưng notand có cùng độ ưu tiên, vì vậy

Python Operators Precedence

+0

Bạn có chắc chắn? 'không 'test' == True' đánh giá là True, trong khi' (không 'test') == True' đánh giá là False, vì vậy có vẻ như 'không a == b' đánh giá thành' không (a == b) '. –

+0

Tôi đã sử dụng AND khi tôi đang chơi đùa với tuyên bố. – JustinDanielson

+0

Câu trả lời này là 'không đúng == đúng' – Alain