1. ホーム
  2. python

[解決済み] と'is'のどちらかを使って文字列を比較すると、異なる結果になることがあるのはなぜですか?

2022-03-15 14:36:01

質問

Pythonのプログラムで、2つの変数に値が設定されているものがあります。 'public' . 条件式の中で、次のような比較をしています。 var1 is var2 これは失敗しますが、これを var1 == var2 を返します。 True .

ここで、Pythonインタプリタを開いて、同じように"is"の比較をしてみると、成功します。

>>> s1 = 'public'
>>> s2 = 'public'
>>> s2 is s1
True

何が足りないのでしょうか?

解決方法は?

is はIDテストです。 == は等値性テストです。あなたのコードで起こったことは、インタープリターでこのようにエミュレートされます。

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

ということで、同じでないのは当たり前ですよね?

言い換えれば a is b は、次のものと同等です。 id(a) == id(b)