a='aaaa'
print isinstance(a, basestring)#true
print isinstance(a, str)#true
最佳答案
在 3.0 之前的 Python 版本中,有两种字符串“纯字符串”和“Unicode 字符串”。纯字符串 (str
) 不能表示拉丁字母表之外的字符(为简单起见,忽略代码页的细节)。 Unicode 字符串 (unicode
) 可以表示任何字母表中的字符,包括一些虚构的字符,如克林贡语。
那么为什么有两种字符串呢,难道只有 Unicode 会更好,因为它可以涵盖所有情况吗?好吧,最好只有 Unicode,但 Python 是在 Unicode 成为表示字符串的首选方法之前创建的。在有很多用户的语言中转换字符串类型需要时间,在 Python 3.0 中,最终所有字符串都是 Unicode。
3.0之前的Python字符串的继承层次是:
object
|
|
basestring
/ \
/ \
str unicode
在 Python 2.3 中引入的 'basestring' 可以被认为是朝着字符串统一方向迈出的一步,因为它可以用来检查对象是 str
还是 unicode 的实例
>>> string1 = "I am a plain string"
>>> string2 = u"I am a unicode string"
>>> isinstance(string1, str)
True
>>> isinstance(string2, str)
False
>>> isinstance(string1, unicode)
False
>>> isinstance(string2, unicode)
True
>>> isinstance(string1, basestring)
True
>>> isinstance(string2, basestring)
True
关于python - isinstance ('aaa' , basestring) 和 isinstance ('aaa' , str) 有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1979004/