2009-11-17 46 views
70

Python實際上是否包含布爾值?我知道你可以這樣做:Python中的布爾值

checker = 1 
if checker: 
    #dostuff 

但我很迂腐,喜歡看Java中的布爾值。例如:

Boolean checker; 
if (someDecision) 
{ 
    checker = true; 
} 
if(checker) 
{ 
    //some stuff 
} 

在Python中是否有這樣的事情?我似乎無法在文檔中找到類似的東西。

+1

記住...創建變量時,你不需要申報類型。只要'checker = False'就足夠了。 –

+7

@Dominic Bou-Samra:「你不需要聲明類型」?這不完全正確。我想你應該說「你不可能爲變量聲明一個類型」。 –

回答

92
checker = None # not necessary 

if some_decision: 
    checker = True 

if checker: 
    # some stuff 

[編輯]

欲瞭解更多信息:http://docs.python.org/library/functions.html#bool

你的代碼工作過,因爲1轉換爲真時,必要的。 其實Python很久沒有布爾類型(就像在老C中一樣),有些程序員使用整數而不是布爾值。

+14

使用checker =(some_decision)(例如checker =(a MAK

+7

這段代碼有點誤導您......在測試之前,您仍然需要定義「檢查器」。雖然OP較早定義了它,但在您的示例檢查器中= None是絕對必要的,否則您將得到UnboundLocalError – dprogramz

+0

Python布爾值是整數。 'True'和'False'是帶有被覆蓋的'__str__'和'__repr__'的擴展'int'對象的引用。 –

78

布爾內建值大寫:TrueFalse

還請注意,您可以做checker = bool(some_decision)作爲一種簡寫 - bool將永遠只會返回TrueFalse

這是很好的瞭解以供將來參考該classes defining __nonzero__ or __len__將取決於TrueFalse對這些功能的結果,但幾乎所有其他對象的布爾結果將是True(除None對象,空序列,和數字零) 。

+1

非常感謝您的洞察力。由於民意投票轉向了其他答案,我授予巴斯蒂安「接受答案」。但你的是最有幫助的! :) – Federer

+21

虛張聲勢:有什麼意思不接受你認爲最有用的答案?如果另一個答案是更高的話,這是完全不相關的。 – tzot

+2

而流行的投票也與這個答案。考慮改變你的投票。 –

5

布爾類型在文檔中定義:
http://docs.python.org/library/stdtypes.html#boolean-values

從文檔引用:

布爾值是兩個恆定對象虛假與真實。它們被用來表示真值(儘管其他值也可以被認爲是錯誤或真實的)。在數值上下文中(例如,當用作算術運算符的參數時),它們的行爲分別與整數0和1相同。如果該值可以被解釋爲真值(參見上面的真值測試部分),那麼可以使用內置函數bool()將任何值轉換爲布爾值。

它們分別被寫爲False和True。

所以在Java代碼中刪除括號,改變trueTrue,你會確定:)

+0

+1,這是我正在尋找我自己的答案的那種引用。 –

10

True ...和False明顯。

否則,None評估爲False,整數0和浮點數0.0(儘管我不會使用像這樣的浮點數)。 此外,空列表[],空連音符(),空字符串''""評估爲False。

自己嘗試一下與功能bool()

bool([]) 
bool(['a value']) 
bool('') 
bool('A string') 
bool(True) # ;-) 
bool(False) 
bool(0) 
bool(None) 
bool(0.0) 
bool(1) 

等。

3

是的,有一個bool數據類型(從int繼承和只有兩個值:TrueFalse)。

但是Python對每個對象都有boolean-able的概念,當調用函數bool([x])時會使用這個概念。

查看更多:object.nonzeroboolean-value-of-objects-in-python

+0

X =布爾(0)#假&& X =布爾(1)#真 –

0

與Java,你會宣稱boolean flag = True,在Python中你可以聲明myFlag = True

的Python會將此解釋爲布爾變量