14

重複の可能性:
「[] == False」が「if not []」が成功したときに False と評価されるのはなぜですか?

Pythonの三項演算子に従って、私はPythonが初めてです

>>> 'true' if True else 'false'  true
   true

[] が None と等しくないため、以下のコード出力を [] として期待しています

>>> a=[]
>>> a==None
False
>>> a if a else None
None

私が間違っている場合は修正してください

ありがとうヘマ

4

2 に答える 2

18

空のリストはと等しく[]ありませんNone

しかし、それは次のように評価できFalseます。つまり、その「真実性」の値はFalseです。(OPに残されたコメントのソースを参照してください。)

このため、

>>> [] == False
False
>>> if []:
...     print "true!"
... else:
...     print "false!"
false!
于 2012-12-10T17:33:01.503 に答える
2

Noneは の唯一のインスタンスであり、NoneType通常は値がないことを示すために使用されます。あなたの例では、ブール値のコンテキストで取得された空のリストが に評価されFalse、条件が失敗するため、else ブランチが実行されます。インタープリターは、次の行に沿って何かを行います。

>>> a if a else None
    [] if [] else None
    [] if False else None
None

に関する別の有用な議論を次に示しますNonePython での None テストではありません

于 2012-12-10T18:04:58.280 に答える