1

重複の可能性:
Python '==' と 'is' で文字列を比較すると、'is' が失敗することがあります。なぜですか?

コードをどのようにテストしたかを説明する部分はスキップして、問題に直接ジャンプします。

Python では、if ステートメントでユニコード文字列を別のインライン ユニコード文字列に分割する際に問題が発生しているようです。

>>>zone = u'domain.com.'
>>>zone[-1:]
u'.'

>>>u'.' is u'.' #works fine
True
>>> z[-1:] == u'.' #works fine
True
>>> zone[-1:] is u'.' # FAILS !
False

ここに私の実際のコードスニペットがあります

>>>if zone[-1:] is not u'.':
>>>    #this line will always run !

「ではない」を != に変更すると、コードは正常に動作します!

「が」原因で比較が失敗した理由を誰かが知っていますか?

4

1 に答える 1

2

これは、文字列がPythonのオブジェクトであるためです---文字列をスライスすると、新しい文字列が作成されます。

それより少し複雑ですが、それが要点です。

解決策:==and!=の代わりにisandを使用しis notます。

于 2011-06-06T20:28:53.867 に答える