空の文字列と同じように、空の文字列が False でない理由がわかりません。キャラクターのコレクションはそれ以下ではないと思います。この場合のPythonの目的の根源は何ですか?
>>> "" in 'fdsa'
True
>>> '' in ''
True
>>> 'asdf' in ''
False
>>> 'adsf' is True
False
空の文字列と同じように、空の文字列が False でない理由がわかりません。キャラクターのコレクションはそれ以下ではないと思います。この場合のPythonの目的の根源は何ですか?
>>> "" in 'fdsa'
True
>>> '' in ''
True
>>> 'asdf' in ''
False
>>> 'adsf' is True
False
あなたの質問がよくわかりません。ここでは 2 つの演算子を使用しています。
in
for strings は、最初の文字列が 2 番目の文字列の部分文字列かどうかをチェックします。 空の文字列は、他のすべての文字列の部分文字列と見なされます。
is
オブジェクトの同一性をテストしTrue
、両方の演算子が同じオブジェクトであるかどうかを返します。 'adsf'
とTrue
は明らかに同じオブジェクトではないため、 が得られますFalse
。
これらの 2 つの演算子はいずれも、ブール コンテキストでの文字列の解釈に関連していません。あなたの質問にも触れているようです。if
たとえば、ブール コンテキストはステートメントの条件になります。Boolean コンテキストでは、空の文字列は として扱われ、空でない文字列は として扱われFalse
ますTrue
。を使用して、オブジェクトがブール コンテキストでどのように動作するかを確認できますbool(obj)
。
文字列のブール値が何であるかを確認したい場合は、次のようにbool()
関数を呼び出すことができます。
>>> bool('')
False
>>> bool('asdf')
True
キーワードin
( docs ) は、要素がシーケンス内にあるかどうかをテストします。それはあなたが望むものではないと思います。