basetring和types.StringType之间的python差异?

时间:2009-10-27 19:19:37

标签: python

有什么区别:

isinstance(foo, types.StringType)

isinstance(foo, basestring)

4 个答案:

答案 0 :(得分:17)

对于Python2:basestringstrunicode的基类,而types.StringType str。如果要检查某些内容是否为字符串,请使用basestring。如果要检查某些内容是否为字节字符串,请使用str并忘记types

答案 1 :(得分:10)

这个东西在Python3中完全不同

types不再有StringType
str始终是unicode
basestring不再存在

因此,如果您需要移植代码,请尽量不要在代码中撒些东西

答案 2 :(得分:1)

>>> import types
>>> isinstance(u'ciao', types.StringType)
False
>>> isinstance(u'ciao', basestring)
True
>>> 

非常重要的区别,在我看来; - )。

答案 3 :(得分:0)

对于Python 2.x:

try:
    basestring        # added in Python 2.3
except NameError:
    basestring = (str, unicode)
...
if isinstance(foo, basestring):
    ...

当然这可能不适用于Python 3,但我确信2to3转换器会处理这个话题。