None 和 python 3 中的 False 有什么区别? (在布尔意义上)

What is the difference between None and False in python 3? (in a boolean sense)

有时 python 似乎将它们视为相同,而其他时候使用 False 时 returns False 但 returns 与 None 无关。在其他语言中,它的行为似乎与 null 非常不同。

一些具体的例子是:

Python 中的不同值可以描述为“真实”或“虚假”,即使它们不是 Boolean 值,这意味着它们被解释为 TrueFalse 在需要 Boolean 值的情况下(例如 if 条件)。根据 documentation 中的定义,Python 中的每个值,无论类型如何,都被解释为 True 除了 以下值(它们是解释为 False):

  • 常量定义为假:NoneFalse
  • 任何数字类型的零:00.00jDecimal(0)Fraction(0, 1)
  • 空序列和集合:''()[]{}set()range(0)

针对你的具体情况,采用if的情况,声明如下:

if None:
    # some code here

在功能上等同于:

if False:
    # some code here

这是因为,如上表所示,为了满足 if 条件,值 None 会自动转换为 False。这就是所谓的“语法糖”,它是语言的一个功能,可以让开发人员的生活更轻松。

但是,仅仅因为 None 在这种特定情况下被 解释为 False,这并不意味着这两个值彼此相等.这是因为 False 是 True/False 对的一部分,表示二进制概念,如“yes/no”、“on/off”等。None另一方面,代表nothing的概念。值为 None 的变量意味着它们根本没有值。比喻成FalseFalse就好像回答别人说“不”,None就好像根本不回答。

作为一个更实际的例子,请看下面的代码片段:

if None == False:
    # code in here would not execute because None is not equal to False