2009-10-27 24 views

Respuesta

17

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

10

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

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

Diferencia bastante importante, me parece ;-).

0

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.

Cuestiones relacionadas