if x == y != z:
print (x + y)
x == yとy!= zの場合は、これは省略形ですか?私のコードでは動作しますが、複数の条件文がすべて==や!=ではない場合や、上記の後者の形式で記述されていない場合、どのように解釈されるのかは不明です。if文での複数の条件のPythonの短縮形
if x == y != z:
print (x + y)
x == yとy!= zの場合は、これは省略形ですか?私のコードでは動作しますが、複数の条件文がすべて==や!=ではない場合や、上記の後者の形式で記述されていない場合、どのように解釈されるのかは不明です。if文での複数の条件のPythonの短縮形
はいdocumentationに記載されているよう:
(...)
比較はは、例えば、任意に連鎖させることができる
y
が評価されることを除いて、x < y <= z
は、x < y and y <= z
に相当します(ただし、どちらの場合もx < y
が偽であると判断された場合、z
は評価されません)。
だからできるチェーンコンパレータのいずれかの種類:<
、>
、==
、>=
、<=
、<>
、!=
、is [not]
、および[not] in
。
さらに文書は、それがより正式行います
正式には、、...、、B、C場合Y、Zは、表現やOP1です、、op2、...、、opNは比較演算子です。
a op1 b op2 c ... y opN z
はに相当します各式の評価は最大で1回です。
だから、例えば:
'a' in 'ab' in 'zabc'
は同等です:
'a' in 'ab' and 'ab' in 'zabc'
素敵な仕事。私たちはこれを将来の質問のための欺瞞ターゲットとして使うことができます。 –
またhttp://stackoverflow.com/questions/28754726/how-do-chained-comparisons-inを見ます-python-actually-workは、連鎖比較がバイトコードレベルでどのように機能するかを示します。 –