Quelle est la différence entre:Différence en python entre basestring et types.StringType?
isinstance(foo, types.StringType)
et
isinstance(foo, basestring)
?
Quelle est la différence entre:Différence en python entre basestring et types.StringType?
isinstance(foo, types.StringType)
et
isinstance(foo, basestring)
?
Pour python2: basestring
est la classe de base pour les deux str
et unicode
, tandis que types.StringType
eststr
. Si vous voulez vérifier si quelque chose est une chaîne, utilisez basestring
. Si vous voulez vérifier si quelque chose est un bytestring, utilisez str
et oubliez le types
.
Ce genre de choses est tout à fait différent dans python3
types
n'a plus StringType
str
est toujours unicode
basestring
n'existe plus
Donc, essayez de ne pas saupoudrer ce genre de choses dans votre code trop si vous pourrait avoir besoin de le porter
>>> import types
>>> isinstance(u'ciao', types.StringType)
False
>>> isinstance(u'ciao', basestring)
True
>>>
Différence assez importante, il me semble ;-).
pour Python 2.x:
try:
basestring # added in Python 2.3
except NameError:
basestring = (str, unicode)
...
if isinstance(foo, basestring):
...
Bien sûr, cela pourrait ne pas fonctionner pour Python 3, mais je suis tout à fait que le convertisseur de 2to3 prendra soin du sujet.