Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Основы программирования на языке Python. Учебное пособие

.pdf
Скачиваний:
1
Добавлен:
07.09.2026
Размер:
2 Мб
Скачать
☆
fro
m div import *
>>> im
port string >>> dir(string) ['_
_builtins__', '__doc__', '__file__', '__name__', '_idmap', '_idmapL',
'_lo
wer', '_swapcase', '_upper', 'atof, 'atof
_error', 'atoi',
'atoi_error', 'atol',
'atol_
error', 'capitalize', 'capwords', 'center', 'count', 'digits', 'expandtabs',
'fin
d',
Гру
ппа
Моду
ли (пакеты)
Сервисы пер
иода выполн
е-
ния
sys, atex
it, copy, traceback, math, cmath,
rando
m, time, calendar, datetime, sets,
arra
y, struct, itertools, locale, gettext
Подд
ержка цикла
раз
работки
pd
b, hotshot, profile, unittest, pydoc
(docu
tils, distutils)
Взаимодействие с ОС
os, os.path, getopt, glob, popen2, shutil, select, sign
al, stat, tempfile
Обрабо
тка
текстов
string
, re, StringIO, codecs, difflib,
mm
ap, sgmllib, htmllib, htmlentitydefs
(xml)
Много
поточные вычисл
е-
ния
threadin
g, thread, Queue
Хранен
ие данных. Архив
а-
ция
pick
le, shelve, anydbm, gdbm, gzip, zlib,
zipf
ile, bz2, csv, tarfile
Для з
агрузки всего содержимого модуля в текущее пространство
имен можно также использовать такую конструкцию:
Фу
нкция dir() выводит на экран содержимое модуля и является
полезным средством экспериментирования в интерактивном режиме:
19.
МОДУЛИ СТАНДАРТНОЙ БИБЛИОТЕКИ
Модул тематике.
и стандартной библиотеки условно разбиты на группы по
31
Окончани
е таблицы
Гру
ппа
Моду
ли (пакеты)
Подд
ержка сети. Проток
о-
лы Internet
cgi,
Cookie, urllib, uriparse, httplib,
sm
tplib, poplib, telnetlib, socket,
asyn-
core
(SocketServer, BaseHTTPServer,
xm
lrpclib, asynchat)
Подд
ержка
Internet. Форма-
ты да
нных
qu
opri, uu, base64, binhex, binascii,
rfc8
22, mimetools, MimeWdter, mult
i-
file,
mailbox, (email)
Python о себе
parser
, symbol, token, keyword, inspect,
tok
enize, pyclbr, py_compile, co
m-
pileall,
dis, compiler
Моду
ли могут содержать один или несколько классов, с помо­щью которых создается объект нужного типа, а затем речь идет уже не об именах из модуля, а об атрибутах этого объекта. И наоборот, некоторые модули содержат общие функции для работы над произ­вольными объектами.
19.1. Модуль sys
Моду
ль sys содержит информацию о среде выполнения программы интерпретатора Python. Ниже представлены наиболее популярные объекты из этого модуля, остальное можно изучить по документации: exit([с]) – выход из программы, можно передать числовой код завер­шения; 0 – в случае успешного завершения, другие числа при аварийном завершении программы; argv – список аргументов командной строки. Обычно sys.argv[0] содержит имя запущенной программы, а остальные параметры пере­даются из командной строки;
platform – платформа, на которой работает интерпретатор version – версия интерпретатора; setrecursionlimit(limit) – установка уровня максимальной вложенно-
сти рекурсивных вызовов; exc_info() – информация об обрабатываемом исключении.
32
lst1 =
[0, 0, 0]
lst = [lst1
] *3
print lst[0
][1] = 1
print lst
fro
m copy import copy
lst1 =
[0, 0, 0]
lst = [co
py(lst1) for i in range(3)] print lst lst[0
][1] = 1
print lst
[[0, 0, 0],
[0, 0, 0], [0, 0, 0]]
[[0, 1, 0],
[0, 0, 0], [0, 0, 0]]
Модуль
19.2.
содержит функции для копирования объектов. Следу-
Модуль copy
ющий пример:
Списо
к lst содержит ссылки на один и тот же список. Для того чтобы действительно размножить список, необходимо применить функцию copy() из модуля copy:
лучили тот результат, который ожидался:
По
В
модуле copy есть еще и функция deepcopy() для глубокого копирования, при которой объекты копируются на всю возможную глубину рекурсивно.
19.3. Модули math и cmath
В этих мод
улях собраны математические функции для действи­тельных и комплексных аргументов. Это те же функции, что исполь­зуются в языке С. В таблице даны функции модуля math. Там, где ар­гумент обозначен буквой z, аналогичная функция определена и в мо­дуле cmath.
33
Функ
ция или ко
н-
станта
Описание
acos(z)
Аркк
осинус z
asin(z)
Арксинус z
atan(z)
Арктанг
енс
z
atan2
(y,x)
atan(y
/x)
ceil(x)
Наиме
ньшее целое, большее или равное х
cos(z)
Косину
с z
cosh(х)
Гипербо
лический косинус х
е
Констан
та е
ехр
(z)
Экспонента
(то есть
е * * z)
fabs(x)
Абсолю
тное значение х
floor(х)
Наибольш
ее целое, меньшее или равное х
fmod(х, у)
Остаток от де
ления х на у
frexp(x)
Воз
вращает мантиссу и порядок х как пару (
m,
i),
где m
– число
с плавающей
точк
ой, а i
– це-
лое, т
акое что х = m * 2. **
i. Если 0 – воз
вращ
а-
ет (0,0
),
иначе 0
.5<=
abs(m)<1.0
hy
pot
(x,y)
sqrt(
x*x+y*y)
ldexp(m,i)
m * (
2**
i)
log(z)
Натур
альный логарифм
z
log10(z)
Десятичны
й логарифм z
modf(x)
Воз
вращает пару (у,
q) – дро
бную и
целу
ю часть
х. Обе части
имеют знак исходного числа
pi
Констан
та Пи
pow(x,y)
х**у
sin(z)
Синус z
sinh(z)
Гипербо
лический синус z
sqrt (z)
Кор
ень квадратный от
z
tan(z)
Танг
енс z
tanh(z)
Гипербо
лический тангенс z
34
Функ
ция
Описание
random()
Генериру
ет псевдослучайное число из пол
у-
открыт
ого диапазона [0.0,1.0)
cho
ice
(s)
Выбирает
случайный элемент из последов
а-
тельности s
shu
ffle
(s)
Размешив
ает элементы изменчивой послед
о-
вательности s на месте
randrang
e([start,] stop[,
step])
Выдает сл
учайное целое число из диапазона
range (start, stop,step)
Аналог
ично
choi
ce (range (start, stop, step))
no
rmalvariate(mu,
sigma)
Чис
ло из последовательности нормально ра
с-
предел
енных псевдослучайных чисел,
mu –
среднее, si
gma
– среднек
вадратическое о
т-
клонение (si
gma
> 0)
im
port sets
А = sets.Set(
[1, 2, 3])
В = sets.Set([2
, 3, 4])
print A|В,
А&В, А
-В, А^В
fo
r i in A:
if i
in B:
print i,
Этот мод
19.4.
уль генерирует псевдослучайные числа для нескольких
Модуль random
различных распределений. Наиболее используемые функции:
В
модуле есть функция seed(n), которая позволяет установить генератор случайных чисел в некоторое состояние, например если возникнет необходимость многократного использования одной и той же последовательности псевдослучайных чисел.
19.5. Модуль sets
Мод
уль реализует тип данных для множеств. Следующий при­мер показывает, как использовать этот модуль. Следует заметить, что в Python 2.4 и старше тип set стал встроенным:
35
Set([1
, 2, 3, 4])
Set([2
, 3])
Set([1
])
Set([1
, 4])
2 3
Константа
Значение
os.curdir
Текущ
ий каталог
os.pardir
Родительски
й каталог
Константа
Значение
os.sep
Разделите
ль элементов пути
os.altsep
Дру
гой разделитель элементов пути
os.path
sep
Разделите
ль путей в списке путей
os.d
efpath
Список п
утей по умолчанию
os.linesep
Признак
окончания строки
В р
езультате будет выведено:
Модуль l
19.6.
ocale применяется для работы с культурной средой,
Модуль locale
где могут использоваться свои правила написания чисел, валют, вре­мени и даты и т. п.
19.7. Модуль os
Разделители
каталогов и другие связанные с этим обозначения
доступны в виде констант.
Пр
ограмма на Python работает в операционной системе в виде отдельного процесса. Функции модуля os дают доступ к различным значениям, относящимся к процессу и к среде, в которой он исполня­ется. Одним из важных объектов, доступных из модуля os, является словарь environ. Например, с помощью переменных окружения web­сервер передает некоторые параметры в CGI-сценарий. В следующем примере можно получить переменную окружения path:
36
im
port os
PATH =
os.environ['PATH']
Функ
ция
Действие
access(path
, flags)
Досту
пност
ь фай
ла или каталога с именем
path
os.F_OK
Файл су
ществует
os.R_OK
Из файла
можно читать
os.W_OK
В файл
можно писать
os.X_OK
Файл можно
исполнять,
катал
ог можно просма
т-
ривать
chdir(path)
Делает path текущ
им рабочим каталогом
getcwd()
Текущ
ий рабочий каталог
chm
od(path,
mo
de)
Устанавлив
ает режим доступа к
path в з
начение
mode
Функ
ция
Действие listdir(
dir)
Воз
вращает список файлов в каталоге
dir
mk
dir(path[,
mo
de])
Соз
дает каталог
path
ma
kedirs(path[,
mo
de])
Аналог mkdir(), с
оздающий все необходимые к
а-
тало
ги, если они не существуют. Возбуждает и
с-
ключение,
когда п
осл
едний каталог уже сущ
е-
ствует
Гру
ппа функций посвящена работе с файлами и каталогами. Приводятся только те функции, которые доступны как в Unix, так и в Windows. Режим запрашиваемого доступа указывается значением flags, составленных комбинацией (побитовым ИЛИ) флагов.
Режим до же). Функция chmod() не дополняет действующий режим, а устанав­ливает его заново.
ступа можно получить, скомбинировав флаги (см. ни-
37
Окончани
е таблицы
Функ
ция
Действие
rem
ove
(path),
un
link
(path)
Удаляет файл path
rm
dir
(),
rem
ovedirs
()
Удаление
каталогов. Удаляет
path до
первого
непу
стого каталога. В случае
, если
самый п
о-
следни
й вложенный
подката
лог в указанном
пути не
пустой, возбуждается исключение
OSE
rror
rename(src, dst)
Переиме
новывает файл или каталог
src в dst
renam
es(src, dst)
Аналог rename(), со
здающий все необходимые
каталоги
для пути
dst и у
даляющий пустые к
а-
тало
ги пути
src
Функ
ция
Действие
im
port
shelve
Подк
лючение модуля
data = ("abc",
12)
Орг
анизация данных
key = "key"
Ключ (строка)
filen
ame
= "po
lka.dat"
Имя файла для хр
анения
d=shelve.open(file
name
)
Открыт
ие
файла
d[key] = data
Сох
ранить
данны
е с ключом key
data= d[key]
Загр
узить
значение по клю
чу из
базы
len(d)
Полу
чить
коли
чество объектов
в файле
Модуль shelve
Для хр
19.8.
анения объектов в родном для Python формате применя­ется shelve. Интерфейс shelve такой же, как у словаря. Модуль shelve позволяет создать объектно-ориентированную базу данных, обеспечивающую сохраняемость объектов, «сериализуемых» [10] с использованием модуля pickle и anydbm. Файлы, создаваемые этим модулем, представлены в двоичном формате.
38
Окончани
е таблицы
Функ
ция
Действие
d.sync()
Запись измене
ний в БД на диске
del d[key]
Удалить кл
юч и значение
flag = d.has
_key(key)
Про
верка наличия ключа
lst = d.keys()
Список ключей
d.close()
Закр
ытие полки
fro
m shelve import *
def
put_shelve(key,data,fname):
d =
open(fname)
d[key] = data
d.sy
nc()
d.clos
e()
return 1
def
get_shelve(key,fname):
d =
open(fname)
if d.h
as_key(key):
data
=d[key]
d.close()
retu
rn data
else:
d.close()
return 0
def
del_shelve(key,fname):
d =
open(fname)
if d.h
as_key(key):
del
d[key]
d.s
ync()
d.close()
return 1
else:
d.close()
return 0
На базе моду
ля shelve создадим свой модуль.
39
a={'10
':('name1','age1'),'111':('2'
,'3'),'121
':('1','2')}
pu
t_shelve('key',a,'data.dat')
b=g
et_shelve('key','data.dat') print b if del_
shelve('key','data.dat'): print '
Данные удале
ны
'
my
data = [(1, 2, 3) , (1, 3, 4)]
im
port csv
##
Запись в файл:
f =
file("my.csv", "w")
writer = csv.
writer(f)
for row in
mydata:
writer.writerow(
row)
f.clos
e() #Чтение из файла: reader = csv.r
eader(file("my.csv"))
fo
r row in reader:
print row
Формат CSV (com
19.9.
ma separated values – значения, разделенные
Модуль csv
запятыми) достаточно популярен для обмена данными между элек­тронными таблицами и базами данных. Следующий ниже пример по­священ записи в CSV-файл и чтению из него:
В данно
м случае количество рекурсивных вызовов растет экс­поненциально от числа n, что совсем не соответствует временной сложности решаемой задачи. При работе с рекурсивными функциями можно легко превысить глубину допустимой в Python рекурсии. Для настройки глубины ре­курсии следует использовать функцию setrecursionlimit(N) из моду­ля sys, установив требуемое значение N.
20. ФУНКЦИИ КАК ПАРАМЕТРЫ И РЕЗУЛЬТАТ
Функции явл строки или списки. Это означает, что их можно передавать в качестве параметров функций или возвращать из функций.
яются такими же объектами Python, как числа,
40
Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]