私の環境は次のとおりです:ubuntu 16.04 & python 2.7.12。真実とブーリアンについて真と偽
私は、マニュアルを読み、その''
、()
、[]
、{}
、そしてNone
はすべてデフォルトでFalse
と考えられているのが分かりました。
しかし、私は、以下の実施例に何が起こっているか理解していない:
Python 2.7.12 (default, Jul 1 2016, 15:12:24)
[GCC 5.4.0 20160609] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> a=''
>>> a==False
False
>>> a==True
False
>>> a=bool(a)
>>> a==False
True
>>>
>>>
>>>
>>> a="abcdefg"
>>> a==True
False
>>> a==False
False
>>> a=bool(a)
>>> a==True
True
>>>
私は正しい結果を取得したいし、私がそうするbool()
機能を使用する必要があります表示されます。 それが正しいのはなぜですか?
すべてのことは、ブール変換が必要なときに例えば '[] 'が自動的に' False' *に変換されるということです。 '[]'と 'False'は異なるオブジェクトであるため、' [== False'は 'False'を返すので、' == 'ステートメントを評価するためにboolに変換する必要はありません。しかし、 'if []'は 'if False'に自動的に変換されます。 – Julien
ブール値を変換した値がifなどに使用されていますが、オブジェクトは 'True'または' False'に評価された後でも(ブール値ではない)値を保持します。たとえば、 '[]と42'は' [] 'を返し、' FalseまたはNone'は 'None'を返します。これは、論理式の値がわかる前に評価された最後の式の値ではなく、 'True'または' False'を返すような論理式が存在するためです。 – BallpointBen