私は他の誰かのコードを読んでいて、彼は次のようなものを持っていました:
return val1 and val2
これをPythonインタープリターで試したところ、ANDで後者の値が得られ、ORで前の値が得られました。
だから私の質問は、その声明で正確に何が起こっているのですか?
ありがとう。
私は他の誰かのコードを読んでいて、彼は次のようなものを持っていました:
return val1 and val2
これをPythonインタープリターで試したところ、ANDで後者の値が得られ、ORで前の値が得られました。
だから私の質問は、その声明で正確に何が起こっているのですか?
ありがとう。
式は、最初のオペランドに基づいて式がTrueまたはFalseに評価されないと判断できる場合に、and
またはor
を短絡し、最後に評価された値を返します。
>>> 0 and 'string'
0
>>> 1 and 'string'
'string'
>>> 'string' or 10
'string'
>>> '' or 10
10
この「副作用」は、Pythonコードでよく使用されます。ブール値を返すことに注意しnot
てください。詳細については、ブール演算子に関するPythonのドキュメントを参照してください。
最初の値が真の場合、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 番目の値に等しい)