为什么“如果不是无”返回 True?

Aar*_*ron 2 python-3.x nonetype

我很难理解这个

我试过:

if not None:
    print('True')
Run Code Online (Sandbox Code Playgroud)

为什么它打印 True?不None应该是类型None吗?

Mar*_*ers 5

所有Python 对象都有一个真值,请参阅真值测试。这包括None,在布尔上下文中被认为是假的

此外,not运算符必须始终生成布尔结果,或者TrueFalse。如果改为not None生产False,那么在已经bool(None)生产的情况下会令人惊讶False

None值是一个哨兵对象,一个信号值。您仍然需要能够测试该对象,并且它具有布尔值非常有帮助。举个例子:

if function_that_returns_value_or_None():
Run Code Online (Sandbox Code Playgroud)

如果None没有布尔值,则该测试将中断。