您正在根据布尔值False的文字值进行检查.与’A’== False相同将不成立.
如果你施展它,你会看到差异:
>>> l = []
>>> l is True
False
>>> l is False
False
>>> l == True
False
>>> l == False
False
>>> bool(l) == False
True
False == False的原因是因为您正在比较相同的对象.它与2 == 2或’A’==’A’相同.
当你看到如果l:这样的检查永远不会通过时,就会遇到困难.那是因为你正在检查项目的真值.按照惯例,所有这些项都将失败一个布尔检查 – 也就是说,它们的布尔值将为False:
>没有
>假(显然)
>任何空序列:”,[],()
>任何“零”值:0,0.0等
>任何空集合:{}(空字典)
> len()返回0的任何内容
这些被称为“假”值.其他一切都是“真实的”.这可能导致一些奇怪的事情,如:
>>> def foo():
... pass
...
>>> bool(foo)
True
这里还要注意的是,不返回显式值的方法总是将None作为返回类型,这导致:
>>> def bar():
... x = 1+1
...
>>> bool(bar)
True
>>> bool(bar())
False