python - 为什么 "not(True) in [False, True]"返回 False?

标签 python operator-precedence comparison-operators

如果我这样做:

>>> False in [False, True]
True

返回 True。仅仅因为 False 在列表中。

但如果我这样做:

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

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

>>> not(True)
False

为什么?

最佳答案

运算符优先级 2.x , 3.x not 的优先级低于in。所以相当于:

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

这就是你想要的:

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

正如@Ben 指出的那样:建议永远不要写not(True),更喜欢not True。前者使它看起来像一个函数调用,而 not 是一个运算符,而不是一个函数。

关于python - 为什么 "not(True) in [False, True]"返回 False?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31421379/

相关文章:

python - 如何对相同 bool 值的 block 进行分组?

python - 绘制直方图时忽略空列表

python - 如何在 QTableWidget 中打印数据库中的数据?

c - 逗号运算符的行为

c++ - 比较运算符中的共享指针常量 ==

python - 使用一类 svm-python 进行新颖性检测

CSS类,优先顺序

c++ - 运算符优先级 C++

c++ - 为什么 std::unique_ptr 有一个相等运算符?

go - 'type DoNotCompare [0]func()' 如何阻止 Golang 中的可比性