a='aaaa'
print isinstance(a, basestring)#true
print isinstance(a, str)#true
источник
a='aaaa'
print isinstance(a, basestring)#true
print isinstance(a, str)#true
В версиях Python до 3.0 существует два вида строк: «простые строки» и «строки в кодировке Юникод». Простые строки ( str
) не могут представлять символы вне латинского алфавита (для простоты игнорируем детали кодовых страниц). Строки Unicode ( unicode
) могут представлять символы из любого алфавита, включая некоторые вымышленные, такие как клингон.
Так почему бы иметь два вида строк, не лучше ли было бы просто использовать Unicode, поскольку он охватывал бы все случаи? Что ж, лучше иметь только Unicode, но Python был создан до того, как Unicode был предпочтительным методом для представления строк. Требуется время, чтобы перевести строковый тип в язык со многими пользователями, в Python 3.0 это, наконец, тот случай, когда все строки являются Unicode.
Иерархия наследования строк Python до 3.0:
object
|
|
basestring
/ \
/ \
str unicode
«Базовая строка», представленная в Python 2.3, может рассматриваться как шаг в направлении объединения строк, поскольку ее можно использовать для проверки того, является ли объект экземпляром str
илиunicode
>>> string1 = "I am a plain string"
>>> string2 = u"I am a unicode string"
>>> isinstance(string1, str)
True
>>> isinstance(string2, str)
False
>>> isinstance(string1, unicode)
False
>>> isinstance(string2, unicode)
True
>>> isinstance(string1, basestring)
True
>>> isinstance(string2, basestring)
True
str
иbyte
еще детиbasestring
? Стоит добавить примечание по этому поводу.basestring
иstr
иbytes
оба подклассаobject
непосредственно. Но обратите внимание, что это имеет смысл, поскольку Py2str
не совпадает с Py3bytes
.basestring
следует рассматривать как «строку символов», в которой Py3 имеет толькоstr
. Следовательно,2to3
инструмент заменяетсяbasestring
наstr
.Все строки являются базовыми, но строки Юникода не относятся к типу str. Попробуйте это вместо этого:
источник
На самом деле вы спрашиваете разницу между basestring и str классом.
Str - это класс, который наследуется от basestr. Но существуют строки Unicode, как и другие, если вы хотите их создать.
источник
Basestring - это суперкласс string. В вашем примере a имеет тип "str", таким образом, это и базовая строка, и str
источник