True = False == True

use*_*100 2 python

可能重复:
为什么Python不能像我期望的那样处理真/假值?

在这种情况下,False = True应该引发错误.

False = True
True == False
True
Run Code Online (Sandbox Code Playgroud)

真+假==真?

if True +  False:
    print True
True
Run Code Online (Sandbox Code Playgroud)

再来一次?

if str(True + False) + str(False + False) == '10':
    print True
True
Run Code Online (Sandbox Code Playgroud)

大声笑

if True + False + True * (False * True ** True / True - True % True) - (True / True) ** True + True - (False ** True ** True):
    print True, 'LOL'
True LOL
Run Code Online (Sandbox Code Playgroud)

为什么这都是真的?

cob*_*bal 12

False只是一个全局变量,您可以分配给它.但是,如果你这样做,它将打破几乎所有事情.

请注意,此行为已在python3k中删除

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

另外,int(False)== 0和int(True)== 1,所以你可以用它们做任意算术

  • 不,他们不是.它们是bool,很容易就可以转换为整数.如果你不相信我,试试"True is 1". (2认同)
  • @KirkStrauser:你应该尝试`isinstance(True,int)`:它是真的.我没有写过"True is 1",只有True是一个整数(通过继承). (2认同)

Nul*_*ion 7

请参阅为什么Python不能像我期望的那样处理真/假值?,这将回答你的第一个问题.基本上你可以想到:

False = True
True == False
True
Run Code Online (Sandbox Code Playgroud)

var = True
True == var
True
Run Code Online (Sandbox Code Playgroud)

(让我想起#define TRUE FALSE // Happy debugging suckers*笑声*)

至于其他问题,当你进行算术运算时True,False它们会转换为10.

  • True + False是一样的1 + 0,这是1,这是True.

  • str(True + False) + str(False + False)是相同的str(1) + str(0),并在+这里连接字符串,所以你会得到10

  • 你的最后一个是一组算术运算,给出非零结果(1),即True.

  • 在C中,你需要编写`typedef enum {TRUE,FALSE} BOOL;`以保持它的微妙;-) (6认同)