为什么它给我输出为“无”的输出不是布尔类型...所以为什么“not None = True”

时间:2016-07-05 02:17:28

标签: python python-2.7

我尝试了这段代码,看看会发生什么,但是我无法得到它背后的逻辑,我期待一个错误...仅仅是为了好奇

python2.7

x = not None
print x

3 个答案:

答案 0 :(得分:4)

当Python评估not时,它会尝试将值转换为布尔值。在这种情况下,None为“falsy”(https://docs.python.org/2.4/lib/truth.html),因此not None的计算结果为True

因此,x = not None相当于x = True - 即您将变量x指定为True。

答案 1 :(得分:1)

因为not是布尔类型运算符(逻辑NOT),所以它将None转换为布尔值。无布尔值为False。与False相反,或not None为True,因此打印为True。

>>> print(bool(None))
False

>>> print(not bool(None))
True

答案 2 :(得分:0)

None评估为False。与False相反的是True。因此,not None的结果为True。布尔类型转换自动发生,类似于3 + True中发生的情况,它提供4