Python中"is"和"isinstance"的区别

7
对于以下代码,str 是一个 Unicode 类型的变量。
str is unicode            # returns false
isinstance(str, unicode)  # returns true

为什么is返回false?

这个回答:https://dev59.com/8WYr5IYBdhLWcg3wdqCv 应该能给你更好的理解。is用于检查对象是否相等。 - karthikr
2
@karthikr 将 equality 替换为 identity - Lukas Graf
1个回答

12

is操作符用于检查两个对象是否完全相同,而isinstance则用于检查第二个参数是否出现在第一个参数的继承链中的任何位置。

因此,当您执行以下操作时:

print(u"s" is unicode)

你实际上是在检查u"s"是否为Unicode,但当你这样做时

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

你正在检查u"s"是否为unicode类型,并且后者实际上是True


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接