В Python 3 есть:
Примеры строк:
In [11]: hi = 'привет' In [12]: hi Out[12]: 'привет' In [15]: type(hi) Out[15]: str In [13]: beautiful = 'schön' In [14]: beautiful Out[14]: 'schön'
Так как строки - это последовательность кодов Юникод, можно записать строку разными способами.
Символ Юникод можно записать, используя его имя:
In [1]: "\N{LATIN SMALL LETTER O WITH DIAERESIS}" Out[1]: 'ö'
Или использовав такой формат:
In [4]: "\u00F6" Out[4]: 'ö'
Строку можно записать как последовательность кодов Юникод:
In [19]: hi1 = 'привет' In [20]: hi2 = '\u043f\u0440\u0438\u0432\u0435\u0442' In [21]: hi2 Out[21]: 'привет' In [22]: hi1 == hi2 Out[22]: True In [23]: len(hi2) Out[23]: 6
Функция ord возвращает значение кода Unicode для символа:
In [6]: ord('ö') Out[6]: 246
Функция chr возвращает символ Юникод, который соответствует коду:
In [7]: chr(246) Out[7]: 'ö'
Тип bytes - это неизменяемая последовательность байтов.
Байты обозначаются так же, как строки, но с добавлением буквы "b" перед строкой:
In [30]: b1 = b'\xd0\xb4\xd0\xb0' In [31]: b2 = b"\xd0\xb4\xd0\xb0" In [32]: b3 = b'''\xd0\xb4\xd0\xb0''' In [36]: type(b1) Out[36]: bytes In [37]: len(b1) Out[37]: 4
В Python байты, которые соответствуют символам ASCII, отображаются как эти символы, а не как соответствующие им байты. Это может немного путать, но всегда можно распознать тип bytes по букве b:
In [38]: bytes1 = b'hello' In [39]: bytes1 Out[39]: b'hello' In [40]: len(bytes1) Out[40]: 5 In [41]: bytes1.hex() Out[41]: '68656c6c6f' In [42]: bytes2 = b'\x68\x65\x6c\x6c\x6f' In [43]: bytes2 Out[43]: b'hello'
Если попытаться написать не ASCII символ в байтовом литерале, возникнет ошибка:
In [44]: bytes3 = b'привет' File "<ipython-input-44-dc8b23504fa7>", line 1 bytes3 = b'привет' ^ SyntaxError: bytes can only contain ASCII literal characters.