Python中的“True”和“False”

我试着运行这段代码:

path = '/bla/bla/bla' if path is True: print "True" else: print "False" 

它打印 。 我以为Python把任何有价值的东西视为 。 为什么发生这种情况?

http://docs.python.org/reference/expressions.html#boolean-operations

在布尔操作的上下文中,当控制stream语句使用expression式时,以下值将被解释为false:False,None,所有types的数字零,以及空string和容器(包括string,元组,列表,字典,集和frozensets)。 所有其他值都被解释为true。

我认为你误解的关键词是“被解释为假”或“被解释为真”。 这并不意味着这些值中的任何一个与True或False相同,甚至等于True或False。

if期望布尔expression式(如在if语句中), ifexpression式'/bla/bla/bla'将被视为真,但是expression式'/bla/bla/bla' is True并且'/bla/bla/bla' == True在Ignacio的回答中会评估为False。

is比较身份。 一个string永远不会与非string相同。

==是平等的。 但是一个string永远不会等于TrueFalse

你既不想要。

 path = '/bla/bla/bla' if path: print "True" else: print "False"