In [20]: print None or False
-------> print(None or False)
False
In [21]: print False or None
-------> print(False or None)
None这种行为让我感到困惑。有人能给我解释一下为什么会这样吗?我希望他们两个的行为是一样的。
发布于 2010-10-12 20:31:48
如果x为true,则表达式x or y的计算结果为x;如果x为false,则表达式的计算结果为y。
请注意,上面句子中的“真”和“假”谈论的是“真实性”,而不是固定值True和False。“真”的东西使if语句成功,“假”的东西使它失败。"false“值包括False、None、0和[] (空列表)。
发布于 2010-10-12 21:16:08
or运算符返回其第一个操作数的值,如果该值在Pythonic布尔意义上为真(也称为“真”),否则它将返回第二个操作数的值。请参阅current online documentation中的表达式一节中标题为的小节。
在这两个示例中,第一个操作数被认为是false,因此第二个操作数的值成为表达式求值的结果。
发布于 2017-11-18 21:21:06
您必须认识到,None、False和True都是单例。
例如,if foo is not None表示foo具有None以外的其他值。这和只有if foo是一样的,基本上就是if foo == True。
所以,not None和True的工作方式是一样的。而且,None和False的工作方式也是一样的。
>>> foo = not None
>>> bool(foo)
True
>>> foo = 5 # Giving an arbitrary value here
>>> bool(foo)
True
>>> foo = None
>>> bool(foo)
False
>>> foo = 5 # Giving an arbitrary value here
>>> bool(foo)
True在编码时要意识到和意识到的重要一点是,当比较两个东西时,None需要is,而True和False需要==。避免if foo == None且仅执行if foo is None且避免if foo != None且仅执行if foo is not None。在if foo is not None的情况下,您可以简单地执行if foo。在if foo is None的情况下,您可以简单地执行if not foo。
注意:True基本上是1,False基本上是0。在Python的旧时代,我们只有值为true的1,而值为false的0。说True而不是1更容易理解,也更人性化;说False而不是0更容易理解和人性化。
https://stackoverflow.com/questions/3914667
复制相似问题