我只是偶然發現了這一點,我無法找到足夠的答案:空字符串布爾邏輯
x = ""
那麼爲什麼:
x == True
False
x == False
False
x != True
True
x != False
True
我應該得出這樣的結論x
既不是True
也不是False
?
我只是偶然發現了這一點,我無法找到足夠的答案:空字符串布爾邏輯
x = ""
那麼爲什麼:
x == True
False
x == False
False
x != True
True
x != False
True
我應該得出這樣的結論x
既不是True
也不是False
?
在蟒蛇 '==' 平等的測試。空字符串不等於True,因此比較結果爲False。
您可以通過它傳遞給布爾函數判斷爲空字符串「感實性」:
>>> x = ''
>>> bool(x)
False
在布爾上下文,空/空字符串都是假的(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
我應該得出結論,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
。
什麼?!您將得出結論:'x'不等於* True或False。你爲什麼認爲這會是?您是否通過https://docs.python.org/2/library/stdtypes.html#truth-value-testing感到困惑?它仍然會在布爾上下文中評估false-y:'if x:','bool(x)',等等。 – jonrsharpe
Dr. Tautology,我想你要測試的是'bool(x)== False '。雖然用戶名檢查出來。 – pholtz
現在看看如果你設置'x = 0',你的測試會發生什麼。然後用'x = 1'做同樣的事情。 –