2016-09-29 147 views
1

我正在測試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整數類型?

+4

'int'是一個類。如果你輸入'int',你會得到'' –

+9

'is'比較引用。你想'isinstance(x,int)' –

+0

Python不是英文的。 'is'運算符做了一些非常具體的事情,看起來與你期望的不同。 – deceze

回答

0

兩者如果你想使用is你應該做的:

>>> print (type(x) is int) 
True 
+0

謝謝大家幫助我理解Python的'is'運算符。我讀過'是'可以用來檢查標識符是否是特定類型。感謝您的編碼器爲我展示了這樣做的正確語法。 –

2

做到這一點,最好的辦法是用isinstance()

所以你的情況:

x = 3 
print isinstance(x, int) 

關於蟒蛇is

運營商is和對象標識is not測試:X是y是真的 當且僅當x和y是相同的對象。

docs

1

嘗試輸入這些到您的解釋:

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關鍵字可以以一些意想不到的方式工作,如果您不確切知道它在做什麼,並且幾乎可以肯定地避免它,如果您曾經測試過相等性。也就是說,在實際的程序之外進行實驗是一個非常好的主意。