Это зависит немного от Ваших потребностей. Некоторые инструментарии лучше в рисунке, другие лучше для записи текста. Каир имеет довольно хорошее для рисования (это поддерживает широкий спектр экрана и типов файлов, включая PDF), но это не может быть идеально для хорошего книгопечатания.
Если вам нужны строки Unicode, вы должны использовать строки документов unicode! Обратите внимание на u
!
# -*- coding: utf-8 -*-
def mylen(word):
u""" <----- SEE 'u' HERE
>>> mylen(u"áéíóú")
5
"""
return len(word)
print mylen(u"áéíóú")
Это будет работать, пока проходят тесты. Для Python 2.x вам понадобится еще один прием, чтобы заставить работать подробный режим проверки документации или получать правильные трассировки, когда тесты терпят неудачу:
if __name__ == "__main__":
import sys
reload(sys)
sys.setdefaultencoding("UTF-8")
import doctest
doctest.testmod()
NB! Всегда используйте setdefaultencoding только для целей отладки. Я бы принял его для использования в документации, но нигде в вашем производственном коде.
Это известная и пока не решенная проблема в Python. См. Открытые вопросы здесь и здесь .
Неудивительно, что его можно изменить, чтобы он работал нормально в Python 3, поскольку там все строки являются Unicode:
def mylen(word):
"""
>>> mylen("áéíóú")
5
"""
return len(word)
print(mylen("áéíóú"))
Мое решение заключалось в том, чтобы избежать символов Юникода, например u '\ xe1 \ xe9 \ xed \ xf3 \ xfa'. Было не так легко читать, но в моих тестах было только несколько символов, отличных от ASCII, поэтому в этих случаях я помещал описание в сторону в виде комментария, например «# n с тильдой».