1

次のレシピに見られるように、|=演算子が使用されます。私はこれまで見たことがなく、文書化されていません。どういう意味ですか?

4

4 に答える 4

7

インプレース|です。ほとんどの場合、と同等a |= bです。a = a | b

于 2012-04-26T07:58:12.953 に答える
4

|=いわゆる増補代入文です。その目的は、通常の|操作と同様に、インプレースまたは操作を行うことです。

ただし、オブジェクトの異なるメソッドが呼び出されるため、いくつかの微妙な違い|__or__()あります。__ror__()|=__ior__()

于 2012-04-26T08:10:49.190 に答える
3

あなたが尋ねている特定のレシピでは:

startupinfo.dwFlags |= subprocess.STARTF_USESHOWWINDOW

dwFlagsはビットマスクです。つまり、整数の適切なビットをオンにすることで、単一の整数値に多数のフラグを格納します。この場合、STARTF_USESHOWWINDOWの値は です。これは、整数1の最下位ビットが である場合にこのフラグが設定され、LSB が である場合に設定されないことを意味します。dwFlags10

この場合に|=演算子が行うことは、左側のオペランドを取得して変更し1、左側のオペランドのビットが設定され、残りのビットがそのままになるようにすることです。

たとえば、前にバイナリ表現に00101000なるようにフラグが設定されている場合、たとえば に設定され、操作前に設定された他のフラグに影響を与えずに設定されたフラグ00101001に追加されます。subprocess.STARTF_USESHOWWINDOW

于 2012-04-26T11:54:11.860 に答える
1

a |= b と同じ意味a = a | bです。

于 2012-04-26T07:58:35.500 に答える