¿Cuál es la diferencia entre:Diferencia en python entre basestring y types.StringType?
isinstance(foo, types.StringType)
y
isinstance(foo, basestring)
?
¿Cuál es la diferencia entre:Diferencia en python entre basestring y types.StringType?
isinstance(foo, types.StringType)
y
isinstance(foo, basestring)
?
Para python2: basestring
es la clase base para ambos str
y unicode
, mientras types.StringType
esstr
. Si desea verificar si algo es una cadena, use basestring
. Si desea verificar si algo es una cadena de bytes, use str
y olvídese de types
.
Este material es completamente diferente en python3
types
no ya tiene StringType
str
siempre es Unicode
basestring
ya no existe
Así que trate de no rociar esas cosas a través de su código demasiado si podría necesitar alguna vez portarlo
>>> import types
>>> isinstance(u'ciao', types.StringType)
False
>>> isinstance(u'ciao', basestring)
True
>>>
Diferencia bastante importante, me parece ;-).
Para Python 2.x:
try:
basestring # added in Python 2.3
except NameError:
basestring = (str, unicode)
...
if isinstance(foo, basestring):
...
Por supuesto, esto podría no funcionar para Python 3, pero estoy muy seguro del convertidor 2to3 se hará cargo del tema.