3

私の最初の質問は、次の質問に対するより抽象的な質問は何かということ (2 and 2*3)です。私の質問のタイトルを適切に変更してください。

私の 2 番目の質問は、python で 6 を返すのは何なのかということです(2 and 2*3)。ここでエレガントなことが行われているようです。この操作について詳しく調べてみたいと思います。

4

6 に答える 6

6

Python 言語リファレンスから:

それらが返す値と型を False と True に制限しandたり制限したりせず、最後に評価された引数を返すことに注意してください。or

そのため、2 and 2*3最初bool(2)に を評価し、 を評価しTrue、次にを評価することを意味bool(2*3)Trueます。したがって、最後に評価された引数2*3( 6) が返されます。

于 2013-08-17T19:48:15.363 に答える
3

最初にこれを読まなければならず、次にこれを読まなければなりませ。:)

andその後、それがブール演算子であり、最初のオペランドをブール値に変換しようとすることがわかります。したがって、最初に読むと、2が に変換されていることがわかりますTrue

知っておく必要がある 3 番目のことは、andオペランドが に変換された場合は最初の引数を返しFalse、 に評価された場合は 2 番目の引数を返すということTrueです。

だから基本的に

z = x and y

次のように翻訳できます。

if x:
    z = y
else:
    z = x

そして今、あなたはすべてを理解しています。:)

2は に評価されTrue、次にandoperator はその 2 番目の引数の値である を返します6

于 2013-08-17T19:51:01.407 に答える
3

python docs x および yによると

: x が false の場合は x、それ以外の場合は y

于 2013-08-17T19:51:51.930 に答える
1

遅延評価を適用すると、python はa and b、a が False と評価された場合は a を返し、a が True と評価された場合は b を返します。

したがって、2 は True と評価され、6 に等しい値を2 and 2*3返します。2*3

于 2013-08-17T19:48:22.900 に答える
1

基本的には と同じ2 and 6です。

使い方?andFalse ( False, 0, []...) と見なされた場合は最初の要素を返し、それ以外の場合は 2 番目の要素を返します

于 2013-08-17T19:48:25.020 に答える
1

これは、Python が式を評価する方法に関係していますx and yyif xisTruexifを返しxますFalse

したがって、 の場合、2 and 2 * 32に評価されるためTrue、 という値が返され2 * 3ます6

and複数のオペランド間の演算の場合は最初の非True値を返し、すべての値が の場合Trueは最後の値を返します。
同様に、or演算子の式 say,は、最初A or B or Cの値を返します。すべての値が の場合、最後の値を返します。 TrueFalse

于 2013-08-17T19:48:27.963 に答える