私はこのコードを試して何が起こったのか見ましたが、 Pythonはnot
を評価するときにエラーを期待して...ただの好奇心のためになぜ私は "None"のような出力としてTrueを返すのかはブール型ではありません...なぜ "None None = True"なのでしょうか?
python2.7
x = not None
print x
私はこのコードを試して何が起こったのか見ましたが、 Pythonはnot
を評価するときにエラーを期待して...ただの好奇心のためになぜ私は "None"のような出力としてTrueを返すのかはブール型ではありません...なぜ "None None = True"なのでしょうか?
x = not None
print x
は、それはboolean型に値を変換しようとします。この場合、「なし」は「偽」(https://docs.python.org/2.4/lib/truth.html)なので、not None
はTrue
と評価されます。
したがって、x = not None
はx = True
に相当します。つまり、変数xをTrueに割り当てることになります。
None
は、False
と評価されます。 False
の反対側はTrue
です。したがって、not None
の結果はTrue
です。ブール型の変換は、3 + True
の場合と同様に自動的に行われ、4
となります。
しかし、NoneとFalseは全く異なる2つの事柄です。 NoneタイプはNoneTypeと値なし 、Trueはタイプ "Boolean"と値Trueを返します –
Pythonのブール値は一般に型の点で非常に流動的ですが、多くのものは暗黙的に( 'None'のように)キャストできます。暗黙的に 'int'のような他の型にキャストされます。 –
not
はブール型演算子(論理NOT)であるため、Noneをブール値に変換します。ブール値はFalseです。 Falseの反対またはnot None
はTrueで、Trueを出力します。そして、なぜこのコードは(ないなし)であれば else文として私に出力を与える
>>> print(bool(None))
False
>>> print(not bool(None))
True
なぜその(ないなし)== falseの場合はelse文 を実行: 印刷「と同じ」他 : プリント真が偽等しくないので、それは何かが怪しいです "出力します –
@ManojGoswami「何かが魚ではありません」 – Li357
== FALSE: 印刷他、 "同じ" : プリント "何かが怪しいです" –
=(ないなし) 'ので、 = False'で 'False'と評価され、' else'ブロックに送られます。 –
答えに感謝します。私はその事実を忘れました。(None = Trueではない) –