私の最初の質問は、次の質問に対するより抽象的な質問は何かということ (2 and 2*3)
です。私の質問のタイトルを適切に変更してください。
私の 2 番目の質問は、python で 6 を返すのは何なのかということです(2 and 2*3)
。ここでエレガントなことが行われているようです。この操作について詳しく調べてみたいと思います。
私の最初の質問は、次の質問に対するより抽象的な質問は何かということ (2 and 2*3)
です。私の質問のタイトルを適切に変更してください。
私の 2 番目の質問は、python で 6 を返すのは何なのかということです(2 and 2*3)
。ここでエレガントなことが行われているようです。この操作について詳しく調べてみたいと思います。
それらが返す値と型を False と True に制限し
and
たり制限したりせず、最後に評価された引数を返すことに注意してください。or
そのため、2 and 2*3
最初bool(2)
に を評価し、 を評価しTrue
、次にを評価することを意味bool(2*3)
しTrue
ます。したがって、最後に評価された引数2*3
( 6
) が返されます。
最初にこれを読まなければならず、次にこれを読まなければなりません。:)
and
その後、それがブール演算子であり、最初のオペランドをブール値に変換しようとすることがわかります。したがって、最初に読むと、2
が に変換されていることがわかりますTrue
。
知っておく必要がある 3 番目のことは、and
オペランドが に変換された場合は最初の引数を返しFalse
、 に評価された場合は 2 番目の引数を返すということTrue
です。
だから基本的に
z = x and y
次のように翻訳できます。
if x:
z = y
else:
z = x
そして今、あなたはすべてを理解しています。:)
2
は に評価されTrue
、次にand
operator はその 2 番目の引数の値である を返します6
。
python docs x および yによると
: x が false の場合は x、それ以外の場合は y
遅延評価を適用すると、python はa and b
、a が False と評価された場合は a を返し、a が True と評価された場合は b を返します。
したがって、2 は True と評価され、6 に等しい値を2 and 2*3
返します。2*3
基本的には と同じ2 and 6
です。
使い方?and
False ( False
, 0
, []
...) と見なされた場合は最初の要素を返し、それ以外の場合は 2 番目の要素を返します
これは、Python が式を評価する方法に関係していますx and y
。y
if x
isTrue
とx
ifを返しx
ますFalse
。
したがって、 の場合、2 and 2 * 3
は2
に評価されるためTrue
、 という値が返され2 * 3
ます6
。
and
複数のオペランド間の演算の場合は最初の非True
値を返し、すべての値が の場合True
は最後の値を返します。
同様に、or
演算子の式 say,は、最初A or B or C
の値を返します。すべての値が の場合、最後の値を返します。 True
False