真 = 假 == 真

2 投票
2 回答
5061 浏览
提问于 2025-04-16 03:31

可能是重复的问题:
为什么Python处理真/假值的方式和我预期的不一样?

在这种情况下,False = True 应该会引发一个错误。

False = True
True == False
True

True + False 等于 True 吗?

if True +  False:
    print True
True

再来一次 True 吗?

if str(True + False) + str(False + False) == '10':
    print True
True

哈哈

if True + False + True * (False * True ** True / True - True % True) - (True / True) ** True + True - (False ** True ** True):
    print True, 'LOL'
True LOL

为什么这一切都是 True 呢?

2 个回答

7

可以查看这个链接:为什么Python不能像我期望的那样处理真/假值?,它会回答你的第一个问题。简单来说,你可以把它想象成:

False = True
True == False
True

就像是

var = True
True == var
True

(让我想起了 #define TRUE FALSE // 快乐的调试者们,真是太搞笑了 *哈哈*)

至于其他问题,当你对 TrueFalse 进行数学运算时,它们会被转换成 10

  • True + False 就等于 1 + 0,结果是 1,也就是 True

  • str(True + False) + str(False + False) 就等于 str(1) + str(0),这里的 + 是用来连接字符串的,所以你会得到 10

  • 你最后那个是一些数学运算,结果是非零的(1),所以是 True。

12

False 其实就是一个全局变量,你可以给它赋值。不过,如果你这么做的话,几乎所有东西都会出问题。

需要注意的是,这种行为在 python3k 中已经被去掉了。

Python 3.1 (r31:73578, Jun 27 2009, 21:49:46) 
>>> False = True
  File "<stdin>", line 1
SyntaxError: assignment to keyword

另外,int(False) 等于 0,而 int(True) 等于 1,所以你可以用它们进行各种数学运算。

撰写回答