In [20]: print None or False
-------> print(None or False)
False
In [21]: print False or None
-------> print(False or None)
None
この振る舞いは私を混乱させます。誰かが私になぜこれがこのように起こっているのか説明できますか? どちらも同じように振る舞うことを期待していました。
In [20]: print None or False
-------> print(None or False)
False
In [21]: print False or None
-------> print(False or None)
None
この振る舞いは私を混乱させます。誰かが私になぜこれがこのように起こっているのか説明できますか? どちらも同じように振る舞うことを期待していました。
式は true の場合、またはfalse の場合にx or y
評価されます。x
x
y
x
上記の文の「真」と「偽」は、固定値True
とではなく、「真偽」について話していることに注意してくださいFalse
。「真」である何かがif
ステートメントを成功させます。「偽」のものは失敗します。「偽」の値には、、、およびFalse
(空のリスト) が含まれます。None
0
[]
or
演算子は、最初のオペランドの値が Python ブール値の意味で true (別名「真実」) である場合、その値を返します。それ以外の場合は、2 番目のオペランドの値を返します。現在のオンライン ドキュメントの式に関するセクションにあるブール演算というタイトルのサブセクションを参照してください。
どちらの例でも、最初のオペランドは false と見なされるため、2 番目のオペランドの値は式を評価した結果になります。
密接に関連するトピック: Pythonor
とand
short-circuit。論理or
演算では、いずれかの引数が true の場合、すべてが true になり、他に何も評価する必要はありません。Python は即座にその「真の」値を返します。処理が終了し、true がなかった場合は、最後に処理した引数を返します。これは "false" 値になります。
and
反対に、偽の値が見つかった場合は、その「偽」の値ですぐに終了するか、すべてを通過した場合は、最終的な「真」の値を返します。
>>> 1 or 2 # first value TRUE, second value doesn't matter
1
>>> 1 and 2 # first value TRUE, second value might matter
2
>>> 0 or 0.0 # first value FALSE, second value might matter
0.0
>>> 0 and 0.0 # first value FALSE, second value doesn't matter
0
ブールの観点からは、どちらも同じように動作し、どちらも false と評価される値を返します。
or
与えられた値を単に「再利用」し、それが true の場合は左の値を返し、そうでない場合は右の値を返します。
Condition1 or Condition2
Condition1 が False の場合、Condition2 を評価して返します。False と評価されるものはありません。