1

簡単な質問です。

私が見たいくつかの python 関数は、たとえば pygame のように次のように呼び出されます。

pygame.display.set_mode((255, 255), FULLSCREEN)これは私には正常に思えます。

ただし、複数の引数を使用する場合は、| を使用する必要があります。例えば: pygame.display.set_mode((255, 255), FULLSCREEN | HWSURFACE | DOUBLEBUF)

いつ、なぜこのような召しが必要ですか? ビットごとの OR 演算子だと聞いたことがありますが、ブール値専用のようです。これはどのように作動しますか?

4

2 に答える 2

2

それらはさまざまなオプションのフラグです。各フラグは単なる数値で、具体的には 2 のべき乗です。ビット単位の演算子を使用して、|必要なすべてのフラグのビットを反転します。例が役立つ場合があります。

>>> import re
>>> re.VERBOSE
64
>>> re.IGNORECASE
2
>>> re.VERBOSE | re.IGNORECASE
66

したがってre、フラグが設定されているかどうかを知りたい場合IGNORECASEは、2 番目のビット (2^1 の場合) が 1 に等しいかどうかを確認できます。であるかどうかを知りたい場合VERBOSEは、7 番目のビット (2^6 の場合) をチェックします。2 と 64をor一緒にすると、2 番目と 7 番目のビットが反転した数値になります。

>>> 66 & 2
2
>>> 66 & 64
64
>>> 66 & 8
0

66 は 2 と 64 のフラグをトリガーしますが、8 はトリガーしません。

于 2012-05-23T20:42:41.020 に答える
0

ビットごとのOR演算子とブール OR演算子の違いに注意してください。

|はビットごとの OR 演算子です。つまり、OR 演算はオペランドのビットごとに行われます。

>>> 1 | 2
3

これは、1 バイナリが001、2 バイナリが010であるため、それらのビットあたりの OR ビットは011、つまり 3 です。

orブール演算子です。

>>> 1 or 2
1
>>> 0 or 2
2

演算子は最初のor有効な値を返します ( 0None[]またはではありません{}) 。

于 2012-05-23T20:52:55.503 に答える