2014-10-04 91 views
0

對於下面的代碼「isinstance」,str是unicode類型的變量,但差異「是」,並在蟒蛇

str is unicode   # returns false 
isinstance(str, unicode) # returns true 

爲什麼is是返回false?

+0

這個答案:http://stackoverflow.com/questions/13650293/understanding-python-is-operator應該給你一個更好的視角。 「is」正在檢查對象是否相等。 – karthikr 2014-10-04 14:03:18

+2

@ karthikr'/平等/身份/' – 2014-10-04 14:06:50

回答

3

is運算符用於檢查兩個對象是否是同一個,而isinstance用於檢查第二個參數是否出現在第一個參數的繼承鏈中的任何位置。

所以,當你做這樣的事情

print(u"s" is unicode) 

你實際上是檢查是否u"s"unicode,但是當你做

print(isinstance(u"s", unicode)) 

要檢查是否u"s"unicode型和後者實際上是True