Во внутреннем представлении Unicode между Python 2.X и 3.X не было никаких изменений.
Это определенно НЕ UTF-16. UTF-что-либо - это байтовое ВНЕШНЕЕ представление.
Каждой единице кода (символ, суррогат и т. Д.) Был присвоен номер из диапазона (0, 2 ** 21).Это называется "порядковым".
Действительно, в документации, которую вы цитировали, все сказано.Большинство двоичных файлов Python используют 16-битные ординалы, которые ограничивают вас базовой многоязычной плоскостью («BMP»), если только вы не хотите копаться с суррогатами (удобно, если вы не можете найти свою рубашку для волос, и ваша лодыжка не работаетржавчина).Для работы с полным репертуаром Unicode вы бы предпочли «широкую сборку» (32 бита).
Вкратце, внутреннее представление в объекте Unicode представляет собой массив 16-разрядных целых чисел без знака или массив 32-разрядных целых чисел без знака (с использованием только 21 бита).