teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

2

修正

2019/09/07 23:06

投稿

8524ba23
8524ba23

スコア38352

answer CHANGED
@@ -3,8 +3,13 @@
3
3
  > None のようなシングルトンと比較をする場合は、常に is か is not を使うべきです。絶対に等値演算子を使わないでください。
4
4
  また、 本当は if x is not None と書いているつもりで、 if x と書いている場合は注意してください - たとえば、デフォルトの値がNoneになる変数や引数に、何かしら別の値が設定されているかどうかをテストする場合です。この「別の値」は、ブール型のコンテクストでは False と評価される(コンテナのような)型かもしれませんよ!
5
5
 
6
- そして
6
+ ~~そして~~ 以下、別の話となるので今回は無視してください。
7
7
 
8
8
  > not ... is ... ではなく、 is not 演算子を使いましょう。これらは機能的に同じですが、後者の方が読みやすく、好ましいです。
9
9
 
10
- とのことです。すなわち`if 変数 is not None`が良いでしょう。
10
+ とのことです。すなわち~~`if 変数 is not None`が良いでしょう。~~
11
+
12
+ - 「変数が`None`か」判定したい場合は`if 変数 is None`
13
+ - 「変数が`None`ではないか」判定したい場合は`if 変数 is not None`
14
+
15
+ が良いでしょう。

1

修正

2019/09/07 23:06

投稿

8524ba23
8524ba23

スコア38352

answer CHANGED
@@ -1,5 +1,10 @@
1
1
  [if not a in b / if a not in b](https://teratail.com/questions/198601)の回答にも挙げられていますが、[PEP8のプログラミングに関する推奨事項](https://pep8-ja.readthedocs.io/ja/latest/#id41)によると
2
2
 
3
+ > None のようなシングルトンと比較をする場合は、常に is か is not を使うべきです。絶対に等値演算子を使わないでください。
4
+ また、 本当は if x is not None と書いているつもりで、 if x と書いている場合は注意してください - たとえば、デフォルトの値がNoneになる変数や引数に、何かしら別の値が設定されているかどうかをテストする場合です。この「別の値」は、ブール型のコンテクストでは False と評価される(コンテナのような)型かもしれませんよ!
5
+
6
+ そして
7
+
3
8
  > not ... is ... ではなく、 is not 演算子を使いましょう。これらは機能的に同じですが、後者の方が読みやすく、好ましいです。
4
9
 
5
- とのことです。
10
+ とのことです。すなわち`if 変数 is not None`が良いでしょう。