2024-09-29 02:25:03 发布
网友
a='aaaa' print isinstance(a, basestring)#true print isinstance(a, str)#true
在3.0之前的Python版本中,有两种字符串“普通字符串”和“unicode字符串”。纯字符串(str)不能表示拉丁字母表以外的字符(为了简单起见,忽略代码页的详细信息)。Unicode字符串(unicode)可以表示任何字母表中的字符,包括一些虚构的字符,如克林贡语。
str
unicode
那么,为什么有两种字符串呢?既然Unicode可以覆盖所有的情况,那么使用Unicode是否更好呢?最好只有Unicode,但Python是在Unicode是表示字符串的首选方法之前创建的。在一种有许多用户的语言中转换字符串类型需要时间,在Python3.0中,最终所有字符串都是Unicode。
Python strings pre-3.0的继承层次结构是:
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
所有字符串都是基字符串,但unicode字符串不是str类型。请改为:
>>> a=u'aaaa' >>> print isinstance(a, basestring) True >>> print isinstance(a, str) False
你真正要问的是basestring和str类之间的区别。
Str是从basestr继承的类。但是unicode字符串也存在,其他字符串也存在,如果您想创建一个字符串的话。
>>> a = u'aaaa' >>> isinstance(a, str) False >>> isinstance(a, basestring) True
在3.0之前的Python版本中,有两种字符串“普通字符串”和“unicode字符串”。纯字符串(
str
)不能表示拉丁字母表以外的字符(为了简单起见,忽略代码页的详细信息)。Unicode字符串(unicode
)可以表示任何字母表中的字符,包括一些虚构的字符,如克林贡语。那么,为什么有两种字符串呢?既然Unicode可以覆盖所有的情况,那么使用Unicode是否更好呢?最好只有Unicode,但Python是在Unicode是表示字符串的首选方法之前创建的。在一种有许多用户的语言中转换字符串类型需要时间,在Python3.0中,最终所有字符串都是Unicode。
Python strings pre-3.0的继承层次结构是:
Python 2.3中引入的“basestring”可以看作是字符串统一方向上的一个步骤,因为它可以用来检查对象是
str
或unicode
的实例所有字符串都是基字符串,但unicode字符串不是str类型。请改为:
你真正要问的是basestring和str类之间的区别。
Str是从basestr继承的类。但是unicode字符串也存在,其他字符串也存在,如果您想创建一个字符串的话。
相关问题 更多 >
编程相关推荐