'==' または 'is' を使用して文字列を比較すると、異なる結果が生成されることがあるのはなぜですか? 質問する

'==' または 'is' を使用して文字列を比較すると、異なる結果が生成されることがあるのはなぜですか? 質問する

2 つの文字列変数が同じ値に設定されます。s1 == s2は常に を返しますTrueが、s1 is s2を返す場合もありますFalse

Python インタープリターを開いて同じis比較を行うと、成功します。

>>> s1 = 'text'
>>> s2 = 'text'
>>> s1 is s2
True

どうしてこれなの?

ベストアンサー1

isは同一性テスト、 は==等価性テストです。コード内で発生することは、インタープリタ内で次のようにエミュレートされます。

>>> a = 'pub'
>>> b = ''.join(['p', 'u', 'b'])
>>> a == b
True
>>> a is b
False

だから、同じではないのも不思議ではないですよね?

言い換えるとa is bid(a) == id(b)

おすすめ記事