is
Pythonで使用して空の文字列をチェックするのは正しいですか?==
同等性をテストしながら、IDチェックを行います。
次のことを考慮してください(使用するという考えはこの回答join
から借用しています):
>>> ne1 = "aaa"
>>> ne2 = "".join('a' for _ in range(3))
>>> ne1 == ne2
True
>>> ne1 is ne2
False
>>>
したがって、ここでis
は期待どおりに機能します。次に、このコードを見てください。
>>> e1 = ""
>>> e2 = "aaa".replace("a", "")
>>> e3 = "" * 2
>>> e4 = "bbb".join(range(0))
>>> e1, e2, e3, e4
('', '', '', '')
>>> e1 is e2
True
>>> e1 is e3
True
>>> e1 is e4
True
>>> id(e1), id(e2), id(e3), id(e4)
(35963168, 35963168, 35963168, 35963168) # why?