我正在測試Python的布爾表達式。當我運行下面的代碼:Python布爾比較
x = 3
print type(x)
print (x is int)
print (x is not int)
我得到下面的結果:當清楚地x是一個
<type 'int'>
False
True
爲什麼(X爲int)返回false和(x是不是int)返回true整數類型?
我正在測試Python的布爾表達式。當我運行下面的代碼:Python布爾比較
x = 3
print type(x)
print (x is int)
print (x is not int)
我得到下面的結果:當清楚地x是一個
<type 'int'>
False
True
爲什麼(X爲int)返回false和(x是不是int)返回true整數類型?
兩者如果你想使用is
你應該做的:
>>> print (type(x) is int)
True
謝謝大家幫助我理解Python的'is'運算符。我讀過'是'可以用來檢查標識符是否是特定類型。感謝您的編碼器爲我展示了這樣做的正確語法。 –
做到這一點,最好的辦法是用isinstance()
所以你的情況:
x = 3
print isinstance(x, int)
關於蟒蛇is
運營商
is
和對象標識is not
測試:X是y是真的 當且僅當x和y是相同的對象。
從docs
嘗試輸入這些到您的解釋:
type(x)
int
x is 3
x is not 3
type(x) is int
type(x) is not int
之所以x is int
是假的它是問號碼3
和P ython int類表示相同的對象。這應該是相當清楚的,這是錯誤的。
作爲一個附註,Python的is
關鍵字可以以一些意想不到的方式工作,如果您不確切知道它在做什麼,並且幾乎可以肯定地避免它,如果您曾經測試過相等性。也就是說,在實際的程序之外進行實驗是一個非常好的主意。
'int'是一個類。如果你輸入'int',你會得到'' –
'is'比較引用。你想'isinstance(x,int)' –
Python不是英文的。 'is'運算符做了一些非常具體的事情,看起來與你期望的不同。 – deceze