2009-10-27 7 views

Répondre

17

Pour python2: basestring est la classe de base pour les deux str et unicode, tandis que types.StringTypeeststr. 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.

10

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

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

Différence assez importante, il me semble ;-).

0

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.