回答編集履歴
2
追記
answer
CHANGED
@@ -28,4 +28,18 @@
|
|
28
28
|
|
29
29
|
**註:**
|
30
30
|
`object.__eq__`をオーバーライドすればハック可能ではあります。
|
31
|
-
同一オブジェクトの比較でFalseを返す実装なんて、真っ当な人なら採用しませんが。
|
31
|
+
同一オブジェクトの比較でFalseを返す実装なんて、真っ当な人なら採用しませんが。
|
32
|
+
|
33
|
+
**追記:**
|
34
|
+
良く考えれば、`nan`同士の比較は常にFalseを返すんでした。
|
35
|
+
```Python
|
36
|
+
>>> nan = float('nan')
|
37
|
+
>>>
|
38
|
+
>>> nan is nan
|
39
|
+
True
|
40
|
+
>>> nan == nan
|
41
|
+
False
|
42
|
+
```
|
43
|
+
|
44
|
+
ただし、これはかなり特殊なケースです。
|
45
|
+
普通は`a is b`がTrueなら`a == b`もTrueになると思ってよいでしょう。
|
1
追記
answer
CHANGED
@@ -18,11 +18,14 @@
|
|
18
18
|
この差はなかなか理解しがたいものがあるので、
|
19
19
|
とりあえず『Noneのときはisを使うんだな』という感覚でも問題ないと思います。
|
20
20
|
|
21
|
+
調べると説明はいろいろ出てきますので、まずはひととおり読んでみましょう。
|
22
|
+
[Google - python == is](https://www.google.co.jp/search?q=python+%3D%3D+is)
|
23
|
+
|
21
24
|
> 下のように記述した結果、違う出力結果が出てきました。
|
22
25
|
|
23
26
|
その疑問に基づいて`is not`を置き換えるならば`!=`では。
|
24
27
|
ふつう(註)はそれでも期待通り動作するはずです。
|
25
28
|
|
26
29
|
**註:**
|
27
|
-
object.__eq__をオーバーライドすればハック可能ではあります。
|
30
|
+
`object.__eq__`をオーバーライドすればハック可能ではあります。
|
28
31
|
同一オブジェクトの比較でFalseを返す実装なんて、真っ当な人なら採用しませんが。
|