首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >False或None与None或False

False或None与None或False
EN

Stack Overflow用户
提问于 2010-10-12 20:29:55
回答 6查看 85.6K关注 0票数 75
代码语言:javascript
复制
In [20]: print None or False
-------> print(None or False)
False

In [21]: print False or None
-------> print(False or None)
None

这种行为让我感到困惑。有人能给我解释一下为什么会这样吗?我希望他们两个的行为是一样的。

EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2010-10-12 20:31:48

如果x为true,则表达式x or y的计算结果为x;如果x为false,则表达式的计算结果为y

请注意,上面句子中的“真”和“假”谈论的是“真实性”,而不是固定值TrueFalse。“真”的东西使if语句成功,“假”的东西使它失败。"false“值包括FalseNone0[] (空列表)。

票数 110
EN

Stack Overflow用户

发布于 2010-10-12 21:16:08

or运算符返回其第一个操作数的,如果该值在Pythonic布尔意义上为真(也称为“真”),否则它将返回第二个操作数的。请参阅current online documentation中的表达式一节中标题为的小节。

在这两个示例中,第一个操作数被认为是false,因此第二个操作数的值成为表达式求值的结果。

票数 16
EN

Stack Overflow用户

发布于 2017-11-18 21:21:06

您必须认识到,NoneFalseTrue都是单例。

例如,if foo is not None表示foo具有None以外的其他值。这和只有if foo是一样的,基本上就是if foo == True

所以,not NoneTrue的工作方式是一样的。而且,NoneFalse的工作方式也是一样的。

代码语言:javascript
复制
>>> 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,而TrueFalse需要==。避免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基本上是1False基本上是0。在Python的旧时代,我们只有值为true的1,而值为false的0。说True而不是1更容易理解,也更人性化;说False而不是0更容易理解和人性化。

票数 10
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3914667

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档