>a = 1
>b = 2
>c = 3
>print "%(a)s + %(b)s = %(c)s" % vars()
Функции компиляции и исполнения
Функция >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()
для аргумента, в котором присутствует непроверенный ввод от пользователя.
Функции ввода–вывода
Функции >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()
.
Функции для работы с атрибутами
У объектов в языке 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')
Функции — «украшатели» методов классов
Эти функции будут рассмотрены в лекции, посвященной ООП.
Обзор стандартной библиотеки
Модули стандартной библиотеки можно условно разбить на группы по тематике.
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
,