在Python3中,
a = b = 3
a is None == b is None
Run Code Online (Sandbox Code Playgroud)
返回False,但是
(a is None) == (b is None)
Run Code Online (Sandbox Code Playgroud)
返回True.所以我假设仅基于这个例子,==优先于is.
然而,
a = b = None
a is None == b is None
Run Code Online (Sandbox Code Playgroud)
返回True.和
(a is None) == (b is None)
Run Code Online (Sandbox Code Playgroud)
返回True.但
a is (None == b) is None
Run Code Online (Sandbox Code Playgroud)
返回False.在这种情况下,它会看起来好像就是有优先==.
再举一个例子,这个表达并不意味着什么,但请耐心等待.如果我说
None is None == None
Run Code Online (Sandbox Code Playgroud)
它返回True.但是以下两个都返回False.
None is (None == None)
(None is None) == None
Run Code Online (Sandbox Code Playgroud)
很明显,Python并没有用一些严格的优先级来评估它们,但是我很困惑发生了什么.如何用2个不同的运算符来评估这个表达式,但是不同于任何一个运算符?