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
语句中), if
expression式'/bla/bla/bla'
将被视为真,但是expression式'/bla/bla/bla' is True
并且'/bla/bla/bla' == True
在Ignacio的回答中会评估为False。
is
比较身份。 一个string永远不会与非string相同。
==
是平等的。 但是一个string永远不会等于True
或False
。
你既不想要。
path = '/bla/bla/bla' if path: print "True" else: print "False"