Python中basestring和types.StringType的区别是什么?

14 投票
5 回答
12589 浏览
提问于 2025-04-15 15:25

这两段代码有什么区别呢:

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 是一个基础类,它是 strunicode 的父类。如果你想检查某个东西是不是字符串,就用 basestring。如果你想检查某个东西是不是字节串(bytestring),那就用 str,可以不管 types 了。

撰写回答