有什么区别:
isinstance(foo, types.StringType)
和
isinstance(foo, basestring)
答案 0 :(得分:17)
对于Python2:basestring
是str
和unicode
的基类,而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转换器会处理这个话题。