Qual è la differenza tra:Differenza in python tra basestring e types.StringType?
isinstance(foo, types.StringType)
e
isinstance(foo, basestring)
?
Qual è la differenza tra:Differenza in python tra basestring e types.StringType?
isinstance(foo, types.StringType)
e
isinstance(foo, basestring)
?
Per python2: basestring
è la classe base per entrambi str
e unicode
, mentre types.StringType
èstr
. Se si desidera verificare se qualcosa è una stringa, utilizzare basestring
. Se si desidera verificare se qualcosa è a test, utilizzare str
e dimenticare types
.
questa roba è completamente diversa in python3
types
non ha più StringType
str
è sempre unicode
basestring
non esiste più
Quindi cercate di non spargere quella roba attraverso il codice di troppo se si potrebbe mai essere necessario portarlo
>>> import types
>>> isinstance(u'ciao', types.StringType)
False
>>> isinstance(u'ciao', basestring)
True
>>>
Differenza abbastanza importante, mi sembra ;-).
Per Python 2.x:
try:
basestring # added in Python 2.3
except NameError:
basestring = (str, unicode)
...
if isinstance(foo, basestring):
...
Naturalmente questo potrebbe non funzionare per Python 3, ma sono abbastanza sicuro che il convertitore 2to3 si occuperà del tema.