В Python 3.x строка состоит из элементов порядкового номера Unicode. (См. Цитату из приведенной ниже ссылки на язык.) Каково внутреннее представление строки Unicode? Это UTF-16?
Элементы строкового объекта Единицы кода Юникода. Код Юникода единица представлена строковым объектом одного элемента и может содержать 16-битное или 32-битное значение, представляющее Unicode порядковый номер (максимальное значение для порядковый номер приведен в sys.maxunicode, и зависит от того, как Python настроен во время компиляции). Суррогатные пары могут присутствовать в Unicode, и будет сообщено как два отдельных элемента.