小编典典

Python `if x is not None` 或 `if not x is None`?

all

我一直认为if not x is None版本更清晰,但谷歌的风格指南PEP-8都使用if x is not None.
是否存在任何细微的性能差异(我假设没有),是否有任何情况下一个真的不适合(使另一个明显成为我的大会的赢家)?*

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

…比较像 None 这样的单例。使用是或不是。


阅读 108

收藏
2022-03-01

共1个答案

小编典典

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

>>> 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,那么就没有歧义。

2022-03-01