小编Jon*_*ang的帖子

Python是,==运算符优先级

在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个不同的运算符来评估这个表达式,但是不同于任何一个运算符?

python operator-precedence python-3.x nonetype

15
推荐指数
1
解决办法
303
查看次数