other = s or "some default value"
or
わかりました、オペレーターがどのように機能するかを明確にする必要があります。これはブール演算子であるため、ブール コンテキストで機能します。値がブール値でない場合、演算子のためにブール値に変換されます。
演算子はoror
のみを返すわけではないことに注意してください。代わりに、最初のオペランドが true と評価された場合は最初のオペランドを返し、最初のオペランドが false と評価された場合は 2 番目のオペランドを返します。True
False
この場合、式は、ブール値に変換されたときに true または true に評価された場合にx or y
返されます。それ以外の場合は、 を返します。ほとんどの場合、これは C♯ の null 合体演算子とまったく同じ目的で機能しますが、次の点に注意してください。x
True
y
42 or "something" # returns 42
0 or "something" # returns "something"
None or "something" # returns "something"
False or "something" # returns "something"
"" or "something" # returns "something"
変数s
を使用して、クラスのインスタンスへの参照または(クラスがメンバーand をNone
定義していない限り) を保持する場合、null 合体演算子と同じセマンティクスを使用しても安全です。__nonzero__()
__len__()
実際、Python のこのような副作用があると便利な場合さえあります。どの値が false と評価されるかはわかっているので、これを使用して、None
具体的に (エラー オブジェクトなど) を使用せずにデフォルト値をトリガーできます。
一部の言語では、この動作はElvis 演算子と呼ばれます。