Cuál es la diferencia entre:

isinstance(foo, types.StringType)

Y

isinstance(foo, basestring)

?

13
YGA 27 oct. 2009 a las 22:19

4 respuestas

La mejor respuesta

Para Python2: basestring es la clase base para ambos str y unicode, mientras que types.StringType es str. 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.

18
Eldamir 6 mar. 2018 a las 13:18

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 bastante seguro de que el convertidor 2to3 se ocupará del tema.

0
Tobias 26 ene. 2012 a las 12:53
>>> import types
>>> isinstance(u'ciao', types.StringType)
False
>>> isinstance(u'ciao', basestring)
True
>>> 

Diferencia bastante importante, me parece ;-).

1
Alex Martelli 27 oct. 2009 a las 20:34

Esto es completamente diferente en Python3

types ya no tiene StringType
str siempre es unicode
basestring ya no existe

Así que trate de no rociar demasiado esas cosas a través de su código si alguna vez necesita portarlo

10
John La Rooy 27 oct. 2009 a las 19:38