Python`if x is not None`或`if not is is None`?[关闭]


问题内容

已关闭 。这个问题需要细节或说明。它当前不接受答案。


想改善这个问题吗? 添加详细信息并通过编辑此帖子来澄清问题。

上个月关闭。

改善这个问题

我一直认为if not x is None版本会更清晰,但是Google的样式指南PEP-8都使用if x is not None。是否存在任何微小的性能差异(我假设不是),并且在任何情况下确实不适合(使另一方成为我的会议的明显获胜者)吗?*

*我指的是任何单身人士,而不仅仅是None

…比较单例,如“无”。使用是或不是。


问题答案:

性能没有差异,因为它们可以编译为相同的字节码:

>>> import dis
>>> dis.dis("not x is None")
  1           0 LOAD_NAME                0 (x)
              2 LOAD_CONST               0 (None)
              4 COMPARE_OP               9 (is not)
              6 RETURN_VALUE
>>> dis.dis("x is not None")
  1           0 LOAD_NAME                0 (x)
              2 LOAD_CONST               0 (None)
              4 COMPARE_OP               9 (is not)
              6 RETURN_VALUE

从风格上讲,我尝试避免not x is y,人类读者可能会误以为(not x) is y。如果我写的x is not y话就没有歧义。