内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用
a='aaaa' print isinstance(a, basestring)#true print isinstance(a, str)#true
在3.0之前的Python版本中,有两种字符串“普通字符串”和“Unicode字符串”。普通字符串(str
)不能表示拉丁字母以外的字符。Unicode字符串(unicode
)可以表示任何字母中的字符,包括一些虚构的字符,如(Klingon)。
那么,为什么有两种字符串呢?既然这涵盖了所有的情况,那么为什么只使用Unicode不是更好吗?最好只使用Unicode,但是Python是在Unicode成为表示字符串的首选方法之前创建的。在一种语言中转换字符串类型需要时间,在Python#number0#中,所有字符串都是Unicode。
Pythonstring的继承层次结构为:
object | | basestring / \ / \ str unicode
在Python#number0#中引入的‘base String’可以看作是朝着字符串统一方向,因为它可以用来检查对象是否是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