答え1
コード行(または行グループ)を見て、そのコードが何をしているのかを理解したい場合は、良い戦略は行をコンポーネント部分に分割することです。この行がなぜ別の結果を返すのか疑問に思います。
>>> print( 5 < ( 5 or 10 ) )
False
>>> print( 5 < ( 10 or 5 ) )
True
だから分解してみましょう。このコード行の唯一の違いはかっこ式と( 5 or 10 )
その( 10 or 5 )
ため、Pythonがこれをどのように処理するかを見てみましょう。
>>> ( 5 or 10 )
5
>>> ( 10 or 5 )
10
print()
この時点で、2つのステートメントの出力が異なる理由が明確になるはずです。つまり、実際にはそれぞれprint( 5 < 5 )
とprint( 5 < 10 )
- です。False
True
しかし、なぜtoとtoを( 5 or 10 )
評価するのですか?そのために、実際の状況を相談しました。5
( 10 or 5 )
10
Pythonドキュメント、ブール演算子の関連セクションにありますor
。
式が最初に評価され
x or y
ますx
。x
True
その値が返されます;それ以外の場合は y を計算し、結果の値を返します。
Pythonで「真実」がどのように機能するかを理解するならば、これは意味があります。数値の場合、0
sum0.0
はfalse(つまり、ブール演算で評価される値False
)であり、他のすべての値はtrue(つまり評価されるTrue
)です。 5または10はいずれもfalseではないため、各括弧で最初の値が返されます。その値自体はTrue
依然としてブールテストで評価されているからです。
>>> x = 5
>>> if x:
... print( f'{x} is truthy enough for me!' )
...
5 is truthy enough for me!
潜在的なユースケースでは、or
SQLと同様の方法で作業できますCOALESCE()
(つまり、falseではなく最初の値を返します)。各変数を持つ変数セットが必要です。できるこれはプログラムに適しており、優先順位を指定したい値を実際の値に設定する(x or y or z)
きちんとした方法です。