次のレシピに見られるように、|=
演算子が使用されます。私はこれまで見たことがなく、文書化されていません。どういう意味ですか?
4 に答える
インプレース|
です。ほとんどの場合、と同等a |= b
です。a = a | b
|=
いわゆる増補代入文です。その目的は、通常の|
操作と同様に、インプレースまたは操作を行うことです。
ただし、オブジェクトの異なるメソッドが呼び出されるため、いくつかの微妙な違い|
が__or__()
あります。__ror__()
|=
__ior__()
あなたが尋ねている特定のレシピでは:
startupinfo.dwFlags |= subprocess.STARTF_USESHOWWINDOW
dwFlags
はビットマスクです。つまり、整数の適切なビットをオンにすることで、単一の整数値に多数のフラグを格納します。この場合、STARTF_USESHOWWINDOW
の値は です。これは、整数1
の最下位ビットが である場合にこのフラグが設定され、LSB が である場合に設定されないことを意味します。dwFlags
1
0
この場合に|=
演算子が行うことは、左側のオペランドを取得して変更し1
、左側のオペランドのビットが設定され、残りのビットがそのままになるようにすることです。
たとえば、前にバイナリ表現に00101000
なるようにフラグが設定されている場合、たとえば に設定され、操作前に設定された他のフラグに影響を与えずに設定されたフラグ00101001
に追加されます。subprocess.STARTF_USESHOWWINDOW
a |= b
と同じ意味a = a | b
です。