Роман Сузи - Язык программирования Python
- Название:Язык программирования Python
- Автор:
- Жанр:
- Издательство:неизвестно
- Год:неизвестен
- ISBN:нет данных
- Рейтинг:
- Избранное:Добавить в избранное
-
Отзывы:
-
Ваша оценка:
Роман Сузи - Язык программирования Python краткое содержание
Курс посвящен одному из бурно развивающихся и популярных в настоящее время сценарных языков программирования — Python. Язык Python позволяет быстро создавать как прототипы программных систем, так и сами программные системы, помогает в интеграции программного обеспечения для решения производственных задач. Python имеет богатую стандартную библиотеку и большое количество модулей расширения практически для всех нужд отрасли информационных технологий. Благодаря ясному синтаксису изучение языка не составляет большой проблемы. Написанные на нем программы получаются структурированными по форме, и в них легко проследить логику работы. На примере языка Python рассматриваются такие важные понятия как: объектно–ориентированное программирование, функциональное программирование, событийно–управляемые программы (GUI–приложения), форматы представления данных (Unicode, XML и т.п.). Возможность диалогового режима работы интерпретатора Python позволяет существенно сократить время изучения самого языка и перейти к решению задач в соответствующих предметных областях. Python свободно доступен для многих платформ, а написанные на нем программы обычно переносимы между платформами без изменений. Это обстоятельство позволяет применять для изучения языка любую имеющуюся аппаратную платформу.
Язык программирования Python - читать онлайн бесплатно ознакомительный отрывок
Интервал:
Закладка:
>>> from email.Header import make_header
>>> print make_header([("Друг", "koi8–r"), ("", "us–ascii")])
=?koi8–r?b?5NLVxw==?=
>>> print make_header([(u"Друг", ""), ("", "us–ascii")])
=?utf–8?b?w6TDksOVw4c=?=
Функция email.Encoders.encode_base64()
воздействует на переданное ей сообщение и кодирует тело с помощью base64. Другие варианты: encode_quopri()
— кодировать quoted printable
, encode_7or8bit()
— оставить семь или восемь бит. Эти функции добавляют необходимые поля.
Аргументы конструкторов классов из MIME–модулей пакета email
:
class MIMEBase(_maintype, _subtype, **_params)
Базовый класс для всех использующих MIME сообщений (подклассов Message
). Тип содержимого задается через _maintype
и _subtype
.
class MIMENonMultipart()
Подкласс для MIMEBase
, в котором запрещен метод attach()
, отчего он гарантированно состоит из одной части.
class MIMEMultipart([_subtype[, boundary[, _subparts[, _params]]]])
Подкласс для MIMEBase
, который является базовым для MIME–сообщений из нескольких частей. Главный тип multipart
, подтип указывается с помощью _subtype
.
class MIMEAudio(_audiodata[, _subtype[, _encoder[, **_params]]])
Подкласс MIMENonMultipart
. Используется для создания MIME–сообщений, содержащих аудио данные. Главный тип — audio
, подтип указывается с помощью _subtype
. Данные задаются параметром _audiodata
.
class MIMEImage(_imagedata[, _subtype[, _encoder[, **_params]]])
Подкласс MIMENonMultipart
. Используется для создания MIME–сообщений с графическим изображением. Главный тип — image
, подтип указывается с помощью _subtype
. Данные задаются параметром _imagedata
.
class MIMEMessage(_msg[, _subtype])
Подкласс MIMENonMultipart
для класса MIMENonMultipart
используется для создания MIME–объектов с главным типом message
. Параметр _msg
применяется в качестве тела и должен являться экземпляром класса Message
или его потомков. Подтип задается с помощью _subtype
, по умолчанию 'rfc822'
.
class MIMEText(_text[, _subtype[, _charset]])
Подкласс MIMENonMultipart
. Используется для создания MIME–сообщений текстового типа. Главный тип — text
, подтип указывается с помощью _subtype
. Данные задаются параметром _text
. Посредством _charset
можно указать кодировку (по умолчанию 'us–ascii'
).
Разбор поля заголовка
В примере выше поле Subject
формировалось с помощью email.Header.make_header()
. Разбор поля поможет провести другая функция: email.Header.decode_header()
. Эта функция возвращает список кортежей, в каждом из них указан кусочек текста поля и кодировка, в которой этот текст был задан. Следующий пример поможет понять суть дела:
subj = """=?koi8–r?Q?=FC=D4=CF_=D0=D2=C9=CD=C5=D2_=CF=DE=C5=CE=D8_=C4=CC=C9?=
=?koi8–r?Q?=CE=CE=CF=C7=CF_=28164_bytes=29_=D0=CF=CC=D1_=D3_=D4?=
=?koi8–r?Q?=C5=CD=CF=CA_=D3=CF=CF=C2=DD=C5=CE=C9=D1=2E_=EF=CE=CF_?=
=?koi8–r?Q?=D2=C1=DA=C2=C9=CC=CF=D3=D8_=CE=C1_=CB=D5=D3=CB=C9_=D7?=
=?koi8–r?Q?_=D3=CF=CF=C2=DD=C5=CE=C9=C9=2C_=CE=CF_=CC=C5=C7=CB=CF?=
=?koi8–r?Q?_=D3=CF=C2=C9=D2=C1=C5=D4=D3=D1_=D7_=D4=C5=CB=D3=D4_?=
=?koi8–r?Q?=D3_=D0=CF=CD=CF=DD=D8=C0_email=2EHeader=2Edecode=5Fheader?=
=?koi8–r?Q?=28=29?="""
import email.Header
for text, enc in email.Header.decode_header(subj):
print enc, text
В результате будет выведено:
koi8–r Это пример очень длинного (164 bytes) поля с темой сообщения.
Оно разбилось на куски в сообщении, но легко собирается в текст
с помощью email.Header.decode_header()
Следует заметить, что кодировку можно не указывать:
>>> email.Header.decode_header("simple text")
[('simple text', None)]
>>> email.Header.decode_header("пример")
[('\xd0\xd2\xc9\xcd\xc5\xd2', None)]
>>> email.Header.decode_header("=?KOI8–R?Q?=D0=D2=CF_?=Linux")
[('\xd0\xd2\xcf ', 'koi8–r'), ('Linux', None)]
Если в первом случае можно подразумевать us–ascii, то во втором случае о кодировке придется догадываться: вот почему в электронных письмах нельзя просто так использовать восьмибитные кодировки. В третьем примере русские буквы закодированы, а латинские — нет, поэтому в результате email.Header.decode_header()
список из двух пар.
В общем случае представить поле сообщения можно только в Unicode. Создание функции для такого преобразования предлагается в качестве упражнения.
Язык XML
В рамках одной лекции довольно сложно объяснить, что такое XML, и то, как с ним работать. В примерах используется входящий в стандартную поставку пакет xml
.
XML(Extensible Markup Language, расширяемый язык разметки) позволяет налаживать взаимодействие между приложениями различных производителей, хранить и подвергать обработке сложно структурированные данные.
Язык XML (как и HTML) является подмножеством SGML, но его применения не ограничены системой WWW. В XML можно создавать собственные наборы тегов для конкретной предметной области. В XML можно хранить и подвергать обработке базы данных и знаний, протоколы взаимодействия между объектами, описания ресурсов и многое другое.
Новичкам не всегда понятно, зачем нужно использовать такой достаточно многословный формат, когда можно создать свой, компактный формат для хранения тех же самых данных. Преимущество XML состоит в том, что вместе с данными он хранит и контекстную информацию: теги и их атрибуты имеют имена. Немаловажно также, что XML сегодня — единый общепринятый стандарт, для которого создано немало инструментальных средств.
Говоря об XML, надо иметь в виду, что XML–документы бывают формально–правильными(well–formed) и состоятельными(valid). Состоятельный XML–документ — это формально–правильный XML–документ, имеющий объявление типа документа(DTD, Document Type Definition). Объявление типа документа задает грамматику, которой текст документа на XML должен удовлетворять. Для простоты изложения здесь не будет рассматриваться DTD, предпочтительнее ограничиться формально–правильными документами.
Для представления букв и других символов XML использует Unicode, что сокращает проблемы с представлением символов различных алфавитов. Однако это обстоятельство необходимо помнить и не употреблять в XML восьмибитную кодировку (во всяком случае, без явного указания).
Следующий пример достаточно простого XML–документа дает представление об этом формате (файл expression.xml):
2
3
4
XML–документ всегда имеет структуру дерева, в корне которого сам документ. Его части, описываемые вложенными парами тегов, образуют узлы. Таким образом, ребра дерева обозначают «непосредственное вложение». Атрибуты тега можно считать листьями, как и наиболее вложенные части, не имеющие в своем составе других частей. Получается, что документ имеет древесную структуру.
Следует заметить, что в отличие от HTML, в XML одиночные (непарные) теги записываются с косой чертой:
, а атрибуты — в кавычках. В XML имеет значение регистр букв в названиях тегов и атрибутов.
Формирование XML–документа
Интервал:
Закладка: