2009-10-27 16 views

Antwort

17

Für Python2: basestring ist die Basisklasse sowohl für str und unicode, während types.StringTypestr ist. Wenn Sie überprüfen möchten, ob etwas eine Zeichenfolge ist, verwenden Sie basestring. Wenn Sie überprüfen möchten, ob etwas ein Byte-String ist, verwenden Sie str und vergessen Sie types.

10

Dieses Zeug ist völlig anders in Python3

types nicht mehr hat StringType
str immer Unicode ist
basestring nicht mehr existiert

versuchen also nicht das Zeug durch den Code zu streuen zu viel, wenn Sie könnte es jemals port es brauchen

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

Ziemlich wichtiger Unterschied, scheint es mir ;-).

0

Für Python 2.x:

try: 
    basestring  # added in Python 2.3 
except NameError: 
    basestring = (str, unicode) 
... 
if isinstance(foo, basestring): 
    ... 

Natürlich könnte dies nicht für Python arbeiten 3, aber ich bin mir ziemlich sicher, dass der 2to3-Wandler Pflege des Themas stattfinden wird.

Verwandte Themen