2016-03-15 109 views
1

我只是偶然發現了這一點,我無法找到足夠的答案:空字符串布爾邏輯

x = "" 

那麼爲什麼:

x == True 
False 

x == False 
False 

x != True 
True 

x != False 
True 

我應該得出這樣的結論x既不是True也不是False

+0

什麼?!您將得出結論:'x'不等於* True或False。你爲什麼認爲這會是?您是否通過https://docs.python.org/2/library/stdtypes.html#truth-value-testing感到困惑?它仍然會在布爾上下文中評估false-y:'if x:','bool(x)',等等。 – jonrsharpe

+1

Dr. Tautology,我想你要測試的是'bool(x)== False '。雖然用戶名檢查出來。 – pholtz

+0

現在看看如果你設置'x = 0',你的測試會發生什麼。然後用'x = 1'做同樣的事情。 –

回答

1

檢查,如果x是真實的假:

bool("") 
> False 

bool("x") 
> True 

上的is==語義詳見this question

1

在蟒蛇 '==' 平等的測試。空字符串不等於True,因此比較結果爲False。

您可以通過它傳遞給布爾函數判斷爲空字符串「感實性」:

>>> x = '' 
>>> bool(x) 
False 
1

在布爾上下文,空/空字符串都是假的(Falsy)。如果您使用

testString = "" 

if not testString: 
    print("NULL String") 
else: 
    print(testString) 

正如snakecharmerb說,如果你把這個字符串到布爾()函數真或假基於

>>> testString = "" 
>>> bool(testString) 
    False 

>>> testString = "Not an empty string" 
>>> bool(testString) 
    True 

參見真值測試該文檔以瞭解更多有關它會返回此:

的Python 2:

https://docs.python.org/2/library/stdtypes.html#truth-value-testing

的Python 3:

https://docs.python.org/3/library/stdtypes.html#truth-value-testing

4

我應該得出結論,x是不真不假?

沒錯。 x既不是True也不是False,它是""。差異從類型開始:

>>> print(type(""), type("x"), type(True), type(False)) 
builtins.str, builtins.str, builtins.bool, builtins.bool 

Python是一種高度面向對象的語言。因此,字符串是對象。 python的好處在於它們可以有一個布爾型表示if x: print("yes"),例如, g ..對於字符串,這種表示是len(x)!=0