および短絡については、ブール演算のドキュメントを参照or
してください。and
式x and y
は最初に評価されx
ます。が false の場合x
、その値が返されます。それ以外の場合y
は評価され、結果の値が返されます。
式x or y
は最初に評価されx
ます。が true の場合x
、その値が返されます。それ以外の場合y
は評価され、結果の値が返されます。
forがTrue 値に評価される場合にのみand
評価されることに注意してください。逆に、 forはFalse 値に評価された場合にのみ評価されます。y
x
or
y
x
最初の式の場合、最初の部分がすでに であるため、True or blah
これは が評価されないことを意味します。blah
True
さらに、カスタムBlah
クラスは True と見なされます。
ブール演算のコンテキストで、また制御フロー ステートメントで式が使用される場合、次の値は false として解釈されます: False
、None
、すべての型の数値ゼロ、および空の文字列とコンテナー (文字列、タプル、リスト、辞書、セットを含む)およびフリーズセット)。他のすべての値は true として解釈されます。(__nonzero__()
これを変更する方法については、特別な方法を参照してください。)
__nonzero__()
クラスはメソッド (またはメソッド) を実装していないため、ブール式に関する限り__len__
考慮されます。True
したがって、式blah or blah.notexist
では、blah
は真であり、blah.notexist
評価されません。
この機能は、経験豊富な開発者によって非常に定期的かつ効果的に使用されており、ほとんどの場合、デフォルトを指定するために使用されます。
some_setting = user_supplied_value or 'default literal'
object_test = is_it_defined and is_it_defined.some_attribute
これらを連鎖させないように注意し、該当する場合は代わりに条件式を使用してください。