python - 为什么“False,True]中的”not(True)“返回False?

如果我这样做:

>>> False in [False, True]
True

返回True。只是因为False在列表中。
但如果我这样做:
>>> not(True) in [False, True]
False

返回False。而not(True)等于False
>>> not(True)
False

为什么?


最佳答案:

运算符优先级2.x3.xnot的优先级低于in的优先级。所以它相当于:

>>> not ((True) in [False, True])
False

这就是你想要的:
>>> (not True) in [False, True]
True

正如@ben指出的那样:建议不要写not(True),最好不要写not True。前者使其看起来像一个函数调用,而not是一个运算符,而不是一个函数。

评论