что такое "строка Unicode" в Python? Означает ли это UCS-2?
Строки Unicode в Python хранятся внутри UCS-2 (16-битное представление фиксированной длины, почти такое же, как UTF-16) или UCS-4 / UTF-32 (32-битное представление фиксированной длины). Это опция времени компиляции; в Windows это всегда UTF-16, в то время как многие дистрибутивы Linux устанавливают UTF-32 («широкий режим») для своих версий Python.
Как правило, вас это не должно волновать: вы будете видеть кодовые точки Unicode как отдельные элементы в своих строках и не будете знать, хранятся ли они как два или четыре байта. Если вы находитесь в сборке UTF-16 и вам нужно обрабатывать символы вне базовой многоязычной плоскости, вы будете делать это неправильно, но это все еще очень редко, и пользователи, которым действительно нужны дополнительные символы, должны компилировать широкие сборки.
прямо не так, или это?
Да, это совершенно неправильно. Честно говоря, я думаю, что учебник довольно старый; вероятно, он предшествует широким строкам Unicode, если не Unicode 3.1 (версия, которая вводит символы вне базовой многоязычной плоскости).
Существует еще один источник путаницы, вытекающий из привычки Windows использовать термин «Unicode» для обозначения, в частности, кодировки UTF-16LE, которую NT использует для внутреннего использования. Люди из Microsoftland могут часто копировать эту несколько вводящую в заблуждение привычку.