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