为什么 Python 在 if 语句中将 strings/numbers 评估为 True 而 myNumber == True returns False?
Why does Python evaluate strings/numbers as True in if statements yet myNumber == True returns False?
以下将打印'ok'
:
if 5:
print('ok')
然而当我这样做时:
print(5 == True)
输出为False
。
同样的事情也发生在字符串上。为什么?
你在这里测试不同的东西。
if
只检查表达式的 bool
(另见 "Truth value testing")是否为 True
,如果标识等于 True
,则不检查.
那么if
实际测试的是:
>>> bool(5) == True
True
True 的值为 1。如果设置 True = 5
(仅在 python 2 中),相等性变为 True。 'if' 语句就像在检查守卫是否不为 0 或 None,因此每个非 0 的数字都可以进入第一个块。事实上 False 的值为 0.
以下将打印'ok'
:
if 5:
print('ok')
然而当我这样做时:
print(5 == True)
输出为False
。
同样的事情也发生在字符串上。为什么?
你在这里测试不同的东西。
if
只检查表达式的 bool
(另见 "Truth value testing")是否为 True
,如果标识等于 True
,则不检查.
那么if
实际测试的是:
>>> bool(5) == True
True
True 的值为 1。如果设置 True = 5
(仅在 python 2 中),相等性变为 True。 'if' 语句就像在检查守卫是否不为 0 或 None,因此每个非 0 的数字都可以进入第一个块。事实上 False 的值为 0.