Шаг 103.
Python: тонкости программирования. Общие структуры ... . Массивоподобные структуры данных. str - неизменяемые массивы символов Юникода

    На этом шаге мы рассмотрим основные особенности этого класса.

    В 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.




Предыдущий шаг Содержание Следующий шаг