Python の「if x is not None」と「if not x is None」の違いは何ですか? [closed] 質問する

Python の「if x is not None」と「if not x is None」の違いは何ですか? [closed] 質問する

私はいつもこのif not x is Noneバージョンの方がわかりやすいと思っていましたが、Googleのスタイルガイドそしてペップ8どちらも を使用しますif x is not None。パフォーマンスに若干の違いはありますか (ないと思います)。また、どちらかが実際に適合しない (私の規則ではもう一方の方が明らかに優れている) ケースはありますか。*

* だけではなく、任意のシングルトンを指しますNone

...None のようなシングルトンを比較するには、is または is not を使用します。

ベストアンサー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曖昧さはありません。

おすすめ記事