2

私は他の誰かのコードを読んでいて、彼は次のようなものを持っていました:

return val1 and val2 

これをPythonインタープリターで試したところ、ANDで後者の値が得られ、ORで前の値が得られました。

だから私の質問は、その声明で正確に何が起こっているのですか?

ありがとう。

4

2 に答える 2

11

式は、最初のオペランドに基づいて式がTrueまたはFalseに評価されないと判断できる場合に、andまたはorを短絡し、最後に評価された値を返します。

>>> 0 and 'string'
0
>>> 1 and 'string'
'string'
>>> 'string' or 10
'string'
>>> '' or 10
10

この「副作用」は、Pythonコードでよく使用されます。ブール値を返すことに注意しnot てください。詳細については、ブール演算子に関するPythonのドキュメントを参照してください。

于 2012-08-12T09:02:56.653 に答える
3

最初の値が真の場合、AND ステートメントは 2 番目の値と等しくなります。それ以外の場合は、最初の値と同じです。

OR ステートメントは、真の場合は最初の値と等しく、それ以外の場合は 2 番目の値と等しくなります。

Python では、オブジェクトをブール値に評価できることに注意してください。最初の値が true であるため、 は 2 番目の値に評価されます (これ"bla" and Falseは空でない文字列であり、bool("string") = Trueです)。

これは、ブール ステートメントが Python (および他の複数のプログラミング言語) で評価される方法です。例えば:

  • True and False= False(最初の値が true であるため、2 番目の値と等しい)
  • False and True= False(最初の値が true でないため、最初の値と等しい)
  • True and True= True(最初の値が true であるため、2 番目の値と等しい)
  • True or False= True(真なので最初の値と等しい)
  • False or True= True(2 番目の値に等しい)
于 2012-08-12T08:57:10.880 に答える