如何在Python中测试对象的类型?

时间:2010-01-17 15:01:55

标签: python types

import string
print string.ascii_lowercase # abcdefghijklmnopqrstuvwxyz
print type(string.ascii_lowercase) # <type 'str'>
print string.ascii_lowercase is str # False

不应该是True吗?

4 个答案:

答案 0 :(得分:4)

is运算符比较两个对象的标识。这就是我相信它在幕后所做的事情:

id(string.ascii_lowercase) == id(str)

实际字符串的标识总是与str类型不同,因此始终为False

这是测试某些东西是否为字符串的最Pythonic方法:

isinstance(string.ascii_lowercase, basestring)

这将匹配strunicode字符串。

答案 1 :(得分:3)

使用:

>>> isinstance('dfab', str)
True

is用于身份测试。

答案 2 :(得分:2)

string.ascii_lowercase is str不应该是True

type(string.ascii_lowercase) is strTrue

is关键字检查对象标识,而不是类型。

您可能经常看到foo is None之类的代码,并认为None是一种类型。 None实际上是一个单例对象。

答案 3 :(得分:0)

你不想要type(string.ascii_lowercase) is str吗?