Python中basestring和types.StringType的区别是什么?
这两段代码有什么区别呢:
isinstance(foo, types.StringType)
和
isinstance(foo, basestring)
呢?
5 个回答
1
>>> import types
>>> isinstance(u'ciao', types.StringType)
False
>>> isinstance(u'ciao', basestring)
True
>>>
这看起来是一个非常重要的区别;-)。
11
这些东西在Python3里完全不同了。
types
里不再有StringType
了。
str
现在总是表示Unicode字符,也就是说它能处理各种语言的文字。
basestring
这个东西也不再存在了。
所以如果你将来可能需要把代码移到其他地方,尽量不要在代码里到处使用这些旧的东西。
19
在Python2中,basestring
是一个基础类,它是 str
和 unicode
的父类。如果你想检查某个东西是不是字符串,就用 basestring
。如果你想检查某个东西是不是字节串(bytestring),那就用 str
,可以不管 types
了。