2009-10-27 20 views

risposta

17

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.

10

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

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

Differenza abbastanza importante, mi sembra ;-).

0

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.

Problemi correlati