2014-10-04 96 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