Разница в python между basestring и типами. StringType? - PullRequest
13 голосов
/ 27 октября 2009

Какая разница между:

isinstance(foo, types.StringType)

и

isinstance(foo, basestring)

Ответы [ 4 ]

17 голосов
/ 27 октября 2009

Для Python2: basestring является базовым классом для str и unicode, а types.StringType - str. Если вы хотите проверить, является ли что-то строкой, используйте basestring. Если вы хотите проверить, является ли что-то байтовой строкой, используйте str и забудьте о types.

10 голосов
/ 27 октября 2009

Этот материал в Python3 совершенно другой

types больше не имеет StringType
str всегда Unicode
basestring больше не существует

Поэтому постарайтесь не слишком разбрызгивать эти вещи через ваш код, если вам когда-нибудь понадобится его портировать

1 голос
/ 27 октября 2009
>>> import types
>>> isinstance(u'ciao', types.StringType)
False
>>> isinstance(u'ciao', basestring)
True
>>> 

Довольно важное отличие, как мне кажется; -).

0 голосов
/ 26 января 2012

Для Python 2.x:

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

Конечно, это может не сработать для Python 3, но я вполне уверен, что конвертер 2to3 позаботится о теме.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...