为什么 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.