14

可能重复:
为什么当“if not []”成功时“[] == False”评估为 False?

根据python的三元运算符,我是python新手

>>> 'true' if True else 'false'  true
   true

我期待下面的代码输出为 [] 因为 [] 不等于 None

>>> a=[]
>>> a==None
False
>>> a if a else None
None

如果我错了,请纠正

谢谢盒马

4

2 回答 2

18

空列表[]等于None

但是,它可以评估为False——也就是说,它的“真实性”值为False. (请参阅 OP 上留下的评论中的来源。)

因为这,

>>> [] == False
False
>>> if []:
...     print "true!"
... else:
...     print "false!"
false!
于 2012-12-10T17:33:01.503 回答
2

None是 the 的唯一实例,NoneType通常用于表示没有价值。在您的示例中发生的情况是,在布尔上下文中获取的空列表评估为False,条件失败,因此执行 else 分支。解释器做了一些事情:

>>> a if a else None
    [] if [] else None
    [] if False else None
None

这是另一个有用的讨论Nonenot None test in Python

于 2012-12-10T18:04:58.280 回答