Python 关于真实和布尔人的真假
我的环境是:ubuntu 16.04和python 2.7.12 我阅读了文档,发现默认情况下,Python 关于真实和布尔人的真假,python,Python,我的环境是:ubuntu 16.04和python 2.7.12 我阅读了文档,发现默认情况下,'、()、[]、{}和无都被视为错误 但我不明白下面的例子是怎么回事: Python 2.7.12(默认,2016年7月1日,15:12:24) [GCC 5.4.0 20160609]关于linux2 有关详细信息,请键入“帮助”、“版权”、“信用证”或“许可证”。 >>>a='' >>>a==假 假的 >>>a==真 假的 >>>a=布尔(a) >>>a==假 真的 >>> >>> >>> >>>
'
、()
、[]
、{}
和无
都被视为错误
但我不明白下面的例子是怎么回事:
Python 2.7.12(默认,2016年7月1日,15:12:24)
[GCC 5.4.0 20160609]关于linux2
有关详细信息,请键入“帮助”、“版权”、“信用证”或“许可证”。
>>>a=''
>>>a==假
假的
>>>a==真
假的
>>>a=布尔(a)
>>>a==假
真的
>>>
>>>
>>>
>>>a=“abcdefg”
>>>a==真
假的
>>>a==假
假的
>>>a=布尔(a)
>>>a==真
真的
>>>
我想要得到正确的结果,似乎我必须使用bool()
函数来实现。
这是正确的吗?为什么?不是这些值等于False
,而是它们在布尔上下文中使用时表现为False
如果绝对需要True
或False
的值,则强制转换到bool
当然是合适的,但在大多数情况下,这是不必要的。例如:
任何对象都可以测试真值,以便在if或while条件下使用,或作为下面布尔运算的操作数
换句话说,这适用于a=''
:
但是a
仍然不等于False
,这意味着当需要布尔转换时,[]
会自动转换为False
。您不需要转换为bool来评估=
语句,因此,由于[]
和False
是不同的对象,[]==False
返回False
。但是,if[]
将自动转换为if False
。请注意,虽然布尔转换值用于if等,但即使在计算为True
或False
后,对象仍将保留其(非布尔)值。例如,[]和42
返回[]
,而False或None
返回None
。这是因为这样的布尔语句不会返回True
或False
,而是在已知逻辑表达式的值之前计算的最后一个表达式的值。
if a:
print "this won't print"