1. ホーム
  2. python

[解決済み] Pythonの `if x is not None` または `if not x is None`? [クローズド]

2022-03-18 16:29:40

質問

いつも思うのですが if not x is None のバージョンの方がわかりやすいと思いますが、Googleの スタイルガイド PEP-8 は、どちらも if x is not None . また、どちらかが本当に合わない(私の規約ではもう一方が明らかに勝者となる)ようなケースはありますか?

*ここでいうシングルトンとは、単に None .

...のような単体を比較するために なし。isまたはis notを使用します。

どのように解決するのですか?

同じバイトコードにコンパイルされるので、性能差はありません。

>>> 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 であれば、曖昧さはない。