Разница между двоичной строкой, байтовой строкой, строкой unicode и обычной строкой (str)

Я немного смущен. В Python в чем разница между двоичной строкой, байтовой строкой, строкой unicode и простой старой строкой (str)? Я использую Python 2.6.

Ответ 1

Это зависит от версии на Python, которую вы используете.

В Python 2.x, если вы пишете 'abc', он имеет тип str, но это означает строку байта. Если вы хотите строку Unicode, вы должны написать u'abc'.

В Python 3.x, если вы пишете 'abc', он все еще имеет тип str, но теперь это означает, что это строка символов Unicode. Если вам нужна строка байта, вы должны написать b'abc'. Нельзя писать u'abc'.

        |  2.x                     |  3.x
--------+--------------------------+-----------------------
Bytes   |  'abc' <type 'str'>      |  b'abc' <type 'bytes'>
Unicode | u'abc' <type 'unicode'>  |   'abc' <type 'str'>