print "%(a)s + %(b)s = %(c)s" % vars()

<p>Функции компиляции и исполнения</p>

Функция reload() уже рассматривалась, а из остальных функций этой категории особого внимания заслуживает eval(). Как следует из названия, эта функция вычисляет переданное ей выражение. В примере ниже вычисляется выражение, которое строится динамически:

a = 2

b = 3

for op in "+-*/%":

 e = "a " + op + " b"

 print e, "->", eval(e)

У функции eval() кроме подлежащего вычислению выражения есть еще два параметра — с их помощью можно задать глобальное и локальное пространства имен, из которых будут разрешаться имена выражения. Пример выше, переписанный для использования с собственным словарем имен в качестве глобального пространства имен:

for op in "+-*/%":

 e = "a " + op + " b"

 print e, "->", eval(e, {'a': 2, 'b': 3})

Функцией eval() легко злоупотребить. Нужно стараться использовать ее только тогда, когда без нее не обойтись. Из соображений безопасности не следует применять eval() для аргумента, в котором присутствует непроверенный ввод от пользователя.

<p>Функции ввода–вывода</p>

Функции input() и raw_input() используются для ввода со стандартного ввода. В серьезных программах их лучше не применять. Функция open() служит для открытия файла по имени для чтения, записи или изменения. В следующем примере файл открывается для чтения:

f = open("file.txt", "r", 1)

for line in f:

 ...

f.close()

Функция принимает три аргумента: имя файла (путь к файлу), режим открытия («r» — чтение, «w» — запись, «a» — добавление или «w+», «a+», «r+» — изменение. Также может прибавляться «t», что обозначает текстовый файл. Это имеет значение только на платформе Windows). Третий аргумент указывает режим буферизации: 0 — без буферизации, 1 — построчная буферизация, больше 1 — буфер указанного размера в байтах.

В новых версиях Python функция open() является синонимом для file().

<p>Функции для работы с атрибутами</p>

У объектов в языке Python могут быть атрибуты (в терминологии языка C++ - члены–данные и члены–функции). Следующие две программы эквивалентны:

# первая программа:

class A:

 pass

a = A()

a.attr = 1

try:

 print a.attr

except:

 print None

del a.attr

# вторая программа:

class A:

 pass

a = A()

setattr(a, 'attr', 1)

if hasattr(a, 'attr'):

 print getattr(a, 'attr')

else:

 print None

delattr(a, 'attr')

<p>Функции — «украшатели» методов классов</p>

Эти функции будут рассмотрены в лекции, посвященной ООП.

<p>Обзор стандартной библиотеки</p>

Модули стандартной библиотеки можно условно разбить на группы по тематике.

1. Сервисы периода выполнения. Модули: sys, atexit, copy, traceback, math, cmath, random, time, calendar, datetime, sets, array, struct, itertools, locale, gettext.

2. Поддержка цикла разработки. Модули: pdb, hotshot, profile, unittest, pydoc. Пакеты docutils, distutils.

3. Взаимодействие с ОС (файлы, процессы). Модули: os, os.path, getopt, glob, popen2, shutil, select, signal, stat, tempfile.

3. Обработка текстов. Модули: string, re, StringIO, codecs, difflib, mmap, sgmllib, htmllib, htmlentitydefs. Пакет xml.

3. Многопоточные вычисления. Модули: threading, thread, Queue.

4. Хранение данных. Архивация. Модули: pickle, shelve, anydbm, gdbm, gzip, zlib, zipfile, bz2, csv, tarfile.

5. Платформо–зависимые модули. Для UNIX: commands, pwd, grp, fcntl, resource, termios, readline, rlcompleter. Для Windows: msvcrt, _winreg, winsound.

6. Поддержка сети. Протоколы Интернет. Модули: cgi, Cookie, urllib, urlparse, httplib, smtplib, poplib, telnetlib, socket, asyncore. Примеры серверов: SocketServer, BaseHTTPServer, xmlrpclib, asynchat.

7. Поддержка Internet. Форматы данных. Модули: quopri, uu, base64, binhex, binascii, rfc822, mimetools, MimeWriter, multifile, mailbox. Пакет email.

8. Python о себе. Модули: parser, symbol, token, keyword, inspect, tokenize, pyclbr, py_compile, compileall, dis, compiler.

Перейти на страницу:

Похожие книги