Являются ли байтовые объекты Python также известными как строки? - PullRequest
5 голосов
/ 12 августа 2011

Это раздел из Dive Into Python 3 относительно строк:

В Python 3 все строки являются последовательностями символов Юникода.Нет такой вещи, как строка Python, закодированная в utf-8, или строка Python, закодированная как CP-1252.«Это строка utf-8?» - неверный вопрос.utf-8 - это способ кодирования символов в виде последовательности байтов.Если вы хотите взять строку и превратить ее в последовательность байтов в определенной кодировке символов, Python 3 может помочь вам в этом.Если вы хотите взять последовательность байтов и превратить ее в строку, Python 3 также поможет вам в этом.Байты не являются символами;байты байты.Персонажи - это абстракция.Строка - это последовательность этих абстракций.

Ранее сегодня я использовал модуль hashlib и прочитал текст справки для md5, который говорит:

Возвратновый хеш-объект MD5;опционально инициализируется строкой.

Ну, он не принимает string - он принимает bytes объект.

Возможно, я читаю слишком много в этом, но не имеет ли смысла, если вместо этого следует использовать текст справки, в котором указано bytes?Или люди используют одно и то же имя для строк и байтов?

Ответы [ 2 ]

6 голосов
/ 12 августа 2011

В Python 2 и 3 str использовалось как для строк символов, так и для байтов. Фактически, до Python 2.6 не было даже типа bytes (а в 2.6 и 2.7 bytes is str).

Упомянутые несоответствия в документации hashlib являются артефактом этой истории.

5 голосов
/ 12 августа 2011

Вероятно, помощь осталась от Python2.

Это одно из самых больших изменений с 2 ​​на 3

    Python2          Python3

    str              bytes
    unicode          str

Python2.6 + начинает готовиться к изменению, делая bytes синонимом str

Вы должны сообщить об этом разработчикам (если это не было исправлено - у меня только 3.1.2 здесь). Я думаю, что формулировка, вероятно, должна быть улучшена

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