“ if x == True”和“ if x:”有什么区别?

Mat*_*ner 11 python

你好stackoverflow社区:-)

我目前正在学习Python,但我并不完全理解“ True / False”的概念。

在Python中,数字0与“假”相关,数字1与“真”相关。

当我写下面的代码

x = 2
y = 1

if y == True:
    print("Y is True")
if x == True:
    print("X is True")
else:
    print("X is False")
Run Code Online (Sandbox Code Playgroud)

我得到“ Y为真”,因为“ 1”为真。我得到“ X为假”,但我认为这也应该为“ True”,因为存在一个值(x = 2)而不是“ None,0等”。

当我写

if x:
    print("X is True")
else:
    print("X is False")
Run Code Online (Sandbox Code Playgroud)

然后我得到“ X为True”,因为x不为空,因此为真。

“ if x:”和“ if x == True”之间的确切区别是什么?

glg*_*lgl 13

区别在于if x:检查的真值x。除0以外的所有整数的真值均为true(在本例中为2)。

if x == True:但是,与x的值相比True,这是一种1。比较会2 == 1导致错误的值。

确切地说,有两个相邻的概念:*一个是“真值”,它确定的行为ifwhile等等。*另一个是TrueFalse,它们分别具有真值“ true”和“ false”,但不一定等于其他真实值。错误值。

如果您确实需要检查的精确值True,并False不管出于什么原因,你可以这样做if x is Trueif x is False。这样可以确保y恰好True可以通过测试,如果y 可以通过测试1

  • 您能补充一下,如果使用`if .. is boolean`比`if .. == boolean`更可取吗? (2认同)

Bar*_*mar 6

==运营商不比较它的操作数的感实性,它比较它们的值。

当布尔值在需要的数字,比如他们用数字进行比较时的上下文中使用,他们获得自动转换:True成为1False变成0

所以

if some_boolean == some_number:
Run Code Online (Sandbox Code Playgroud)

实际上等效于:

if int(some_boolean) == some_number:
Run Code Online (Sandbox Code Playgroud)

这就是为什么

if True == 2:
Run Code Online (Sandbox Code Playgroud)

不成功。int(True)1,所以这等效于

if 1 == 2:
Run Code Online (Sandbox Code Playgroud)