2017-02-05 7 views
1
if x == y != z: 
    print (x + y) 

x == yとy!= zの場合は、これは省略形ですか?私のコードでは動作しますが、複数の条件文がすべて==や!=ではない場合や、上記の後者の形式で記述されていない場合、どのように解釈されるのかは不明です。if文での複数の条件のPythonの短縮形

+0

またhttp://stackoverflow.com/questions/28754726/how-do-chained-comparisons-inを見ます-python-actually-workは、連鎖比較がバイトコードレベルでどのように機能するかを示します。 –

答えて

5

はいdocumentationに記載されているよう:

(...)

比較はは、例えば、任意に連鎖させることができるyが評価されることを除いて、x < y <= zは、x < y and y <= zに相当します(ただし、どちらの場合もx < yが偽であると判断された場合、zは評価されません)。

だからできるチェーンコンパレータのいずれかの種類:<>==>=<=<>!=is [not]、および[not] in

さらに文書は、それがより正式行います

正式には、、...、、B、C場合YZは、表現やOP1です、、op2、...、、opNは比較演算子です。a op1 b op2 c ... y opN zはに相当します各式の評価は最大で1回です。

だから、例えば:

'a' in 'ab' in 'zabc' 

は同等です:

'a' in 'ab' and 'ab' in 'zabc' 
+2

素敵な仕事。私たちはこれを将来の質問のための欺瞞ターゲットとして使うことができます。 –