import string
print string.ascii_lowercase # abcdefghijklmnopqrstuvwxyz
print type(string.ascii_lowercase) # <type 'str'>
print string.ascii_lowercase is str # False
不应该是True
吗?
答案 0 :(得分:4)
is
运算符比较两个对象的标识。这就是我相信它在幕后所做的事情:
id(string.ascii_lowercase) == id(str)
实际字符串的标识总是与str
类型不同,因此始终为False
。
这是测试某些东西是否为字符串的最Pythonic方法:
isinstance(string.ascii_lowercase, basestring)
这将匹配str
和unicode
字符串。
答案 1 :(得分:3)
使用:
>>> isinstance('dfab', str)
True
is
用于身份测试。
答案 2 :(得分:2)
string.ascii_lowercase is str
不应该是True
。
type(string.ascii_lowercase) is str
是True
。
is
关键字检查对象标识,而不是类型。
您可能经常看到foo is None
之类的代码,并认为None
是一种类型。 None
实际上是一个单例对象。
答案 3 :(得分:0)
你不想要type(string.ascii_lowercase) is str
吗?