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

时间:2019-09-19 07:52:26

标签: python

Hello 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")

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

我写的时候

if x:
    print("X is True")
else:
    print("X is False")

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

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

3 个答案:

答案 0 :(得分:13)

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

但是,

if x == True:xTrue的值1进行比较。比较2 == 1会得出错误的值。

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

如果出于任何原因绝对需要检查TrueFalse的确切值,则可以使用if x is Trueif x is False进行检查。这样可以确保y恰好True会通过测试,如果y 1不会通过。

答案 1 :(得分:6)

==运算符不比较其操作数的真实性,而是比较其值。

在需要数字的上下文中使用布尔值时(例如,将它们与数字进行比较时),它们会自动转换:True变成1False变成{{1} }。

所以

0

实际上等效于:

if some_boolean == some_number:

这就是为什么

if int(some_boolean) == some_number:

不成功。 if True == 2: int(True),所以等价于

1

答案 2 :(得分:2)

解决问题的等效方法:

"if x" <==> "if bool(x)"

因为您的x是整数:

"if x" <==> "if x != 0"

"if x == True"  <==> "if x == 1"