次の行を理解するのに問題があります。
result = (status!=None and "off" or "on")
これが呼び出されると、status値(正規表現検索の結果)のみが割り当てられます。ただし、このコマンドの後、result「on」または「off」の値を取ります。
私の訓練されていない目には、これは単なる比較のように見えます。この割り当てはどのように行われていますか?
次の行を理解するのに問題があります。
result = (status!=None and "off" or "on")
これが呼び出されると、status値(正規表現検索の結果)のみが割り当てられます。ただし、このコマンドの後、result「on」または「off」の値を取ります。
私の訓練されていない目には、これは単なる比較のように見えます。この割り当てはどのように行われていますか?
ドキュメントから:
式
x and yは最初に評価しxます; falseの場合x、その値が返されます。それ以外の場合yは評価され、結果の値が返されます。式
x or yは最初に評価しxます; trueの場合x、その値が返されます。それ以外の場合yは評価され、結果の値が返されます。
さらに、空でない文字列は、ブールコンテキストで表示される場合、「真」であると見なされます。
これで、私たちはあなたの質問に取り組むことができます。
演算子の優先順位規則により、次のようになります。
status != None and "off" or "on"
と同等です:
(status != None and "off") or "on"
最初の部分は、次のようにstatus != None and "off"評価されます。
Falsestatusの場合None;"off"そうでなければ式全体は、次のように(status != None and "off") or "on"評価されます。
"on"statusの場合None;"off"そうでなければ。このステートメントを書くための間違いなくよりPythonicな方法は次のとおりです。
result = "on" if status is None else "off"