次の行を理解するのに問題があります。
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"
評価されます。
False
status
の場合None
;"off"
そうでなければ式全体は、次のように(status != None and "off") or "on"
評価されます。
"on"
status
の場合None
;"off"
そうでなければ。このステートメントを書くための間違いなくよりPythonicな方法は次のとおりです。
result = "on" if status is None else "off"