Python 3. *:
Ответ пользователя 222512 правильный:
A. Для подсчета количества символов в str
объекте вы можете использовать len()
function:
>>> print(len('please anwser my question'))
25
B. Чтобы получить объем памяти в байтах, выделенный для хранения str
объекта, вы можете использовать sys.getsizeof()
function
>>> from sys import getsizeof
>>> print(getsizeof('please anwser my question'))
50
Python 2. *:
Это становится сложным для Python 2. *.
A. Функция len()
в Python 2 возвращает количество байтов, выделенных для хранения кодированных символов в объекте str
.
Иногда это будет равно количеству символов:
>>> print(len('abc'))
3
Но иногда это не будет:
>>> print(len('йцы')) #String contains cyrillic symbols
6
Это потому, что str
может использовать кодирование переменной длины внутренне.Таким образом, для подсчета символов в str
вы должны знать, какую кодировку использует ваш str
объект.Затем вы можете преобразовать его в unicode
объект и получить количество символов:
>>> print(len('йцы'.decode('utf8'))) #String contains Cyrillic symbols
3
B. Функция sys.getsizeof()
делает то же самое, что и в Python3 - возвращает количество байтов, выделенных для хранения целого строкового объекта
>>> print(getsizeof('йцы'))
27
>>> print(getsizeof('йцы'.decode('utf8')))
32
PS Я тестировал примеры кода под Anaconda Python на 32-битнойWindows