Python(None)为None,但()不为None

时间:2019-06-08 16:22:41

标签: python

答案应该非常简单,应该已经是答案,但是我找不到它。

()           is None # False
(None)       is None # True
(None, None) is None # False

所有这些检查的结果都是可以预期的,但总的来说看起来很奇怪。问题:

  1. 为什么是(None) is None-是因为拆箱?
  2. 为什么要() is not None?即如果(None)已经 None为什么()不是?

2 个答案:

答案 0 :(得分:2)

() is not None

因为()是一个空元组,而不是无。

(None, None) is not None

因为(None, None)是具有两个None元素的元组,显然与一个None元素不同。

(None) is None

因为(None)在元组中不是。这些括号用于表示数学分组/计算顺序,在这种情况下可以省略,从而得到None is None

(None,) is not None

这可能是您要尝试创建的,带有一个None元素的元组。

答案 1 :(得分:1)

  1. 因为放在括号内并且表达式不会更改其值。

  2. 为什么应该是None()实际上是一个空元组。