以前的開發已經離開代碼中的一個很奇怪的not x is None
尤達條件:與尤達條件「沒x是無」
>>> x = None
>>> not x is None
False
>>> x = 1
>>> not x is None
True
一些測試後,我似乎相同的輸出x is not None
。
>>> x = None
>>> not x is None
False
>>> x is not None
False
>>> x = 1
>>> not x is None
True
>>> x is not None
True
是not x is None
總是等同於x is not None
?
打破了這種狀況,是not (x is None)
或(not x) is None
?或者前者總是等於後者?
這都是關於運算符的優先級。閱讀這個答案http:// stackoverflow。com/questions/31421379/why-does-not-true-false-false-true-return-false/31458009#31458009 – Kasramvd
是按照[文檔](https://docs.python.org/3/reference/expressions。 html#operator-precedence),** not **的優先級低於compare **的是**。所以你以前的假設應該是正確的。 – umutto
「Yoda條件」將是'None is x'。 – Ryan