Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/282.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 关于真实和布尔人的真假_Python - Fatal编程技术网

Python 关于真实和布尔人的真假

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==假 真的 >>> >>> >>> >>>

我的环境是: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==假
真的
>>>
>>>
>>>
>>>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"