可能重复:
Why can't Python handle true/false values as I expect?
False = True在这种情况下会引发错误。
False = True
True == False
True
True + False == True?
if True + False:
print True
True
真的再次?
if str(True + False) + str(False + False) == '10':
print True
True
LOL
if True + False + True * (False * True ** True / True - True % True) - (True / True) ** True + True - (False ** True ** True):
print True, 'LOL'
True LOL
为什么这都是真的?
答案 0 :(得分: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,所以你可以用它们进行任意算术
答案 1 :(得分:7)
请参阅Why can't Python handle true/false values as I expect?,这将回答您的第一个问题。基本上你可以想到:
False = True
True == False
True
作为
var = True
True == var
True
(让我想起#define TRUE FALSE // Happy debugging suckers
*咯咯笑*)
至于其他问题,当您对True
和False
进行算术运算时,它们会转换为1
和0
。
True + False
与1 + 0
相同,即1
,True
。
str(True + False) + str(False + False)
与str(1) + str(0)
相同,此处+
连接字符串,因此您将获得10
你的最后一个是一组算术运算,给出非零结果(1),即为True。