Was ist der Unterschied zwischen:Unterschied in Python zwischen Basestring und types.StringType?
isinstance(foo, types.StringType)
und
isinstance(foo, basestring)
?
Was ist der Unterschied zwischen:Unterschied in Python zwischen Basestring und types.StringType?
isinstance(foo, types.StringType)
und
isinstance(foo, basestring)
?
Für Python2: basestring
ist die Basisklasse sowohl für str
und unicode
, während types.StringType
str
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
.
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
>>> import types
>>> isinstance(u'ciao', types.StringType)
False
>>> isinstance(u'ciao', basestring)
True
>>>
Ziemlich wichtiger Unterschied, scheint es mir ;-).
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.