2012-05-23 23 views
1

只是一個簡單的問題。Python管道字符調用功能

我已經看到一些Python函數被調用這樣的,例如pygame的:

pygame.display.set_mode((255, 255), FULLSCREEN)這似乎是正常的我。

但是當你想使用多個參數時,你必須使用|。例如: pygame.display.set_mode((255, 255), FULLSCREEN | HWSURFACE | DOUBLEBUF)

何時以及爲什麼要這樣的呼叫?我聽說它是​​按位或運算符,但它似乎只適用於布爾值。這個怎麼用?

回答

2

它們是不同選項的標誌。每個標誌只是一個數字,尤其是2的冪。您可以使用按位運算符|來翻轉所需的所有標誌位。一個例子可能幫助:

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

所以如果re想知道IGNORECASE標誌是否設置它可以只檢查第二位(2^1)是否等於1,如果是的話,我們應該忽略大小寫。如果它想知道是否是VERBOSE,它會檢查第7位(對於2^6)。通過or將2和64結合在一起,就可以得到一個數字,其中第二和第七位被翻轉。

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

我們可以看到,66觸發標誌爲2和64,但不8.

0

當心按位或運算符布爾OR運營商之間的差:

|是按位OR操作符,即OR操作是按位操作數的位進行的:

>>> 1 | 2 
3 

這是因爲1級的二進制是001,2進制是010,所以每個人位或位爲011,也就是3

or是布爾運算符。

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

or操作返回第一個有效值(不0None[]{}

+0

請問,我在哪裏可以得到二進制數字(001 = 1)的表? –

+0

看看這裏:https://en.wikipedia.org/wiki/Binary_numbers – elias

+0

更具體地說,「計數二進制」 – elias