На этом шаге мы рассмотрим основные особенности этого класса.
В Python 3.x объекты строкового типа str используются для хранения текстовых данных в виде неизменяемых последовательностей символов Юникода.
См. документацию Python "str": https://docs.python.org/3/library/stdtypes.html#text-sequence-type-str.
В сущности, это означает, что тип str представляет собой неизменяемый массив символов. Как это ни странно, но тип str также является рекурсивной структурой данных: каждый символ в строке сам является объектом str длиной, равной 1.
Строковые объекты пространственно эффективны, потому что они плотно упакованы и специализируются на одном-единственном типе данных. Если вы храните текст в кодировке Юникод, то лучше использовать этот тип данных. Поскольку строки в Python не могут изменяться, модификация строкового значения требует создания модифицированной копии. Самым близким эквивалентом "изменяющейся последовательности символов" будет список, в котором символы хранятся по отдельности.
>>> arr = 'abcd' >>> arr[1] 'b' >>> arr 'abcd' # Строки неизменяемы: >>> arr[1] = 'e' Traceback (most recent call last): . . . . TypeError: 'str' object does not support item assignment >>> del arr[1] Traceback (most recent call last): . . . . TypeError: 'str' object doesn't support item deletion # Строки могут быть распакованы в список, в результате чего # они получают изменяемое представление: >>> list('abcd') ['a', 'b', 'c', 'd'] >>> ''.join(list('abcd')) 'abcd' # Строки - это рекурсивные структуры данных: >>> type('abc') <class 'str'> >>> type('abc'[0]) <class 'str'>
На следующем шаге мы рассмотрим класс bytes.