Главная страница

справочник по Python. мм isbn 9785932861578 9 785932 861578


Скачать 4.21 Mb.
Названиемм isbn 9785932861578 9 785932 861578
Анкорсправочник по Python
Дата08.05.2022
Размер4.21 Mb.
Формат файлаpdf
Имя файлаBizli_Python-Podrobnyy-spravochnik.440222.pdf
ТипСправочник
#518195
страница21 из 82
1   ...   17   18   19   20   21   22   23   24   ...   82
getattr(object, name [,default])
Возвращает значение атрибута name объекта object. Аргумент name должен быть строкой, содержащей имя атрибута. Необязательный аргумент de-
fault
определяет значение, возвращаемое в случае отсутствия атрибута.
Если этот аргумент не задан, возбуждается исключение AttributeError. Воз- вращает тот же результат, что и выражение object.name.

Встроенные функции и типы
265
globals()
Возвращает словарь текущего модуля, который представляет глобальное пространство имен. При вызове из функции или метода возвращает гло- бальное пространство имен для модуля, в котором была определена эта функция или метод.
hasattr(object, name)
Возвращает True, аргумент name является именем атрибута объекта object.
В противном случае возвращается значение False. Аргумент name должен быть строкой.
hash(object)
Возвращает целочисленное значение хеша для объекта object (если это воз- можно). Значения хешей в первую очередь используются в реализациях словарей, множеств и других объектов отображений. Два объекта, которые признаются равными, имеют одинаковые значения хешей. Изменяемые объекты не поддерживают возможность вычисления хеша, однако пользо- вательские объекты могут определять метод __hash__(), чтобы обеспечить поддержку этой операции.
help([object])
Обращается к справочной системе во время интерактивных сеансов. Аргу- мент object может быть строкой с именем модуля, класса, функции, мето- да, с ключевым словом или названием раздела в документации. Если пере- дается объект какого-либо другого типа, будет воспроизведена справочная информация для этого объекта. При вызове без аргумента будет запущен инструмент предоставления интерактивной справки с дополнительной ин- формацией.
hex(x)
Вернет строку с шестнадцатеричным представлением целого числа x.
id(object)
Возвращает уникальный целочисленный идентификатор объекта object.
Этому значению не следует придавать какой-либо особый смысл (считать, например, что это адрес объекта в памяти).
input([prompt])
В Python 2 эта функция выводит приглашение к вводу prompt, читает вве- денную строку и обрабатывает ее с помощью функции eval() (то есть это то же самое, что и вызов eval(raw_input(prompt))). В Python 3 приглашение к вводу prompt выводится в поток стандартного вывода, а введенная строка возвращается без какой-либо дополнительной обработки.
int(x [,base])
Тип, используемый для представления целых чисел. Если аргумент x яв- ляется числом, оно будет преобразовано в целое число, усечением дроб- ной части до 0. Если это строка, она будет преобразована в целочисленное значение. Необязательный аргумент base определяет основание системы

266
Глава 12. Встроенные функции счисления и используется при преобразовании строки в число. В Python 2 длинные целые числа создаются, только когда значение x не умещается в 32-битный тип int.
isinstance(object, classobj)
Возвращает True, если объект object является экземпляром класса clas-
sobj
, или подкласса класса classobj, или абстрактного базового класса clas-
sobj
. Аргумент classobj может также быть кортежем возможных типов или классов. Например, вызов isinstance(s, (list,tuple)) вернет True, если объ- ект s является кортежем или списком.
issubclass(class1, class2)
Возвращает True, если класс class1 является подклассом класса (то есть на- следует) class2 или если класс class1 зарегистрирован в абстрактном базо- вом классе class2. Аргумент class2 может также быть кортежем возможных классов, в этом случае будет проверен каждый класс в кортеже. Обратите внимание, что вызов issubclass(A, A) вернет True.
iter(object [,sentinel])
Возвращает итератор, воспроизводящий элементы объекта object. Если аргумент sentinel опущен, объект object должен реализовать либо метод
__iter__()
, который создает итератор, либо метод __getitem__(), который принимает целочисленные аргументы со значениями, начиная с 0. При на- личии аргумента sentinel аргумент object интерпретируется иначе. В этом случае объект object должен быть вызываемым объектом, не принимаю- щим аргументов. Возвращаемый им итератор будет вызываться этой функ- цией в цикле до тех пор, пока он не вернет значение, равное значению аргу- мента sentinel, после чего итерации будут остановлены. Если объект object не поддерживает итерации, будет возбуждено исключение TypeError.
len(s)
Возвращает количество элементов, содержащихся в s. Аргумент s должен быть списком, кортежем, строкой, множеством или словарем. Если аргу- мент s является итерируемым объектом другого типа, например генерато- ром, возбуждается исключение TypeError.
list([items])
Тип, используемый для представления списков. Аргумент items может быть любым итерируемым объектом, значения которого будут использо- ваться для заполнения списка. Если аргумент items уже является списком, создается его копия. При вызове без аргумента возвращается пустой спи- сок.
locals()
Возвращает словарь, соответствующий локальному пространству имен вы- зывающей функции. Этот словарь должен использоваться только для по- лучения значений – изменения, выполненные в этом словаре, не сохраня- ются в локальном пространстве имен.

Встроенные функции и типы
267
long([x [, base]])
Т
ип, используемый для представления длинных целых чисел в Python 2.
Если аргумент x является числом, оно будет преобразовано в целое число усечением дробной части до 0. Если это строка, она будет преобразована в длинное целое число. При вызове без аргументов возвращается значение
0L
. Для обеспечения переносимости следует избегать непосредственного ис- пользования функции long(). Функция int(x) будет создавать длинные це- лые числа в случае необходимости. Чтобы убедиться, что аргумент x явля- ется целым числом, проверку типа следует проводить следующим образом: isinstance(x, numbers.Integral)
map(function, items, ...)
В Python 2 применяет функцию function к каждому элементу последова- тельности items и возвращает список результатов. В Python 3 создается итератор, который воспроизводит те же результаты. Если функции map() передается несколько последовательностей, это предполагает, что коли- чество аргументов, принимаемых функцией function, совпадает с коли- чеством последовательностей, когда каждый аргумент берется из другой последовательности. В случае нескольких последовательностей поведение map()
в Python 2 и Python 3 отличается. В Python 2 результат будет иметь ту же длину, что и самая длинная последовательность, а в случае исчер- пания более коротких последовательностей вместо недостающих значений будет использоваться None. В Python 3 результат будет иметь ту же длину, что и самая короткая последовательность. Вместо функции map() практи- чески всегда лучше использовать выражения-генераторы или генераторы списков (которые обладают более высокой производительностью). Напри- мер, вызов map(function, s) обычно можно заменить генератором списков
[
function(x) for x in s]
max(s [, args, ...])
Если передается единственный аргумент s, возвращает элемент последова- тельности s с максимальным значением. Аргумент s может быть любым итерируемым объектом. Если передается несколько аргументов, функция возвращает наибольший из аргументов.
min(s [, args, ...])
Если передается единственный аргумент s, возвращает элемент последова- тельности s с минимальным значением. Аргумент s может быть любым итерируемым объектом. Если передается несколько аргументов, функция возвращает наименьший из аргументов.
next(s [, default])
Возвращает следующий элемент итератора s. После того как все элементы итератора будут исчерпаны, возбуждает исключение StopIteration, если не указано значение по умолчанию в аргументе default. В противном случае возвращается значение по умолчанию. Для обеспечения переносимости вместо непосредственного вызова метода s.next() итератора s всегда следует использовать эту функцию. В Python 3 соответствующий метод итераторов

268
Глава 12. Встроенные функции был переименован в s.__next__(). Если в программном коде использовать только функцию next(), вам не придется беспокоиться об этих различиях.
object()
Базовый класс всех объектов в языке Python. Его можно использовать для создания экземпляров, но результат не представляет особого интереса.
oct(x)
Вернет строку с восьмеричным представлением целого числа x.
open(filename [, mode [, bufsize]])
В Python 2 открывает файл filename и возвращает новый объект файла (гла- и возвращает новый объект файла (гла- возвращает новый объект файла (гла- возвращает новый объект файла (гла- новый объект файла (гла- новый объект файла (гла- объект файла (гла- объект файла (гла- файла (гла- файла (гла-
(гла- гла- ва 9 «Ввод и вывод»). Аргумент mode – это строка, описывающая режим от- крытия файла: ‘r’ – для чтения, ‘w’ – для записи и ‘a’ – для добавления в конец. Второй символ строки, ‘t’ или ‘b’, используется для определения текстового (по умолчанию) или двоичного режима. Например, если ука- зана строка режима ‘r’ или ‘rt’, файл будет открыт в текстовом режиме, а если указана строка ‘rb’, файл будет открыт в двоичном режиме. В строку режима может быть добавлен необязательный символ ‘+’, чтобы указать, что файл должен быть доступен для обновления (то есть допускаются опе- рации чтения и записи). При выборе режима ‘w+’ размер существующего файла будет усечен до нуля. При выборе режима ‘r+’ или ‘a+’ файл будет открыт как для чтения, так и для записи, но при этом первоначальное со- держимое файла останется нетронутым. При выборе режима ‘U’ или ‘rU’ файл будет открыт в режиме поддержки универсального символа перево- да строки. В этом режиме все возможные варианты символов завершения строки (‘\n’, ‘\r’, ‘\r\n’) будут преобразовываться в стандартный символ
‘\n’
. Если аргумент mode опущен, предполагается режим ‘rt’. Аргумент buf-
size
определяет поведение механизма буферизации, где значение 0 означа- ет отсутствие буферизации, 1 – построчную буферизацию, а любое другое значение интерпретируется как приблизительный размер буфера в байтах.
Отрицательное число указывает, что должны использоваться системные параметры настройки буферизации (по умолчанию).
open(filename
[, mode [, bufsize [, encoding [, errors [, newline [, closefd]]]]]])
В Python 3 открывает файл filename и возвращает новый объект файла.
Первые три аргумента имеют то же значение, что и в версии Python 2, опи-
Python 2, опи-
2, опи- санной выше. Аргумент encoding – это название кодировки символов, такое как ‘utf-8’. Аргумент errors определяет политику обработки ошибок коди- рования символов и может иметь одно из следующих значений: ‘strict’,
‘ignore’
, ‘replace’, ‘backslashreplace’ или ‘xmlcharrefreplace’. Аргумент newline определяет поведение режима поддержки универсального символа пере- вода строки и может иметь значение None, ‘’, ‘\n’, ‘\r’ или ‘\r\n’. Аргумент
closefd
– это логический флаг, который определяет, должен ли фактически закрываться дескриптор файла при вызове метода close(). В отличие от вер- сии в Python 2, функция open() в Python 3 может возвращать объекты, об- ладающие различными возможностями, в зависимости от выбранного ре- жима ввода-вывода. Например, если файл открывается в двоичном режиме, возвращается объект, который выполняет операции ввода-вывода, такие

Встроенные функции и типы
269
как read() и write(), не над строками, а над массивами байтов. Файловые операции ввода-вывода – это одна из областей, где имеются существенные различия между Python 2 и 3. Дополнительные подробности приводятся в приложении A, «Python 3».
ord(c)
Возвращает целочисленный код символа c. Для обычных символов воз- вращается значение в диапазоне [0,255]. Для символов Юникода обычно возвращается значение в диапазоне [0,65535]. В Python 3 аргумент c может быть суррогатной парой Юникода, в этом случае она будет преобразована в кодовый пункт соответствующего символа Юникода.
pow(x, y [, z])
Возвращает результат выражения x ** y. Если аргумент z определен, воз- вращается результат выражения (x ** y) % z. Если заданы все три аргу- мента, все они должны быть целыми числами, а аргумент y в этом случае должен быть неотрицательным числом.
print(value, ... [, sep=separator, end=ending, file=outfile])
Функция в Python 3, используемая для вывода последовательности значе-
Python 3, используемая для вывода последовательности значе-
3, используемая для вывода последовательности значе- ний. Может принимать любое число значений, при этом все они будут вы- водиться в одной строке. Именованный аргумент sep позволяет определить свой символ-разделитель (по умолчанию используется пробел). Именован- ный аргумент end позволяет определить свой символ завершения строки
(по умолчанию используется ‘\n’). Именованный аргумент file позволяет перенаправить вывод в объект файла. Эта функция может использоваться в Python 2, если добавить в программный код инструкцию from __future__ import print_function
property([fget [,fset [,fdel [,doc]]]])
Создает атрибут-свойство класса. Аргумент fget – это функция, возвраща- ющая значение атрибута, fset – устанавливает новое значение атрибута, а fdel – удаляет атрибут. Аргумент doc содержит строку документирова- содержит строку документирова- строку документирова- строку документирова- документирова- документирова- ния. Все аргументы могут передаваться как именованные аргументы, на-
. Все аргументы могут передаваться как именованные аргументы, на-
Все аргументы могут передаваться как именованные аргументы, на- пример property(fget=getX, doc=”some text”).
range([start,] stop [, step])
В Python 2 создает список, заполненный целыми числами в диапазоне от
start
до stop. Аргумент step позволяет определить шаг и по умолчанию име- ет значение 1. Если аргумент start опущен (когда функция range() вызыва- ется с одним аргументом), по умолчанию он принимается равным 0. При отрицательном значении аргумента step создается список с числами в по- рядке убывания.
1
В Python 3 функция range() создает специальный объект range
, который вычисляет значения по требованию (как это делает функ- ция xrange() в предыдущих версиях Python).
1
В этом случае значение аргумента start должно быть больше значения аргумен- та stop. – Прим. перев.

270
Глава 12. Встроенные функции
raw_input([prompt])
Ф
ункция в Python 2, которая читает данные из потока стандартного вво-
Python 2, которая читает данные из потока стандартного вво-
2, которая читает данные из потока стандартного вво- да (sys.stdin) и возвращает их в виде строки. Если аргумент prompt указан, он будет выведен в поток стандартного вывода (sys.stdout) перед чтением ввода. Завершающие символы перевода строки удаляются, а если будет прочитан признак конца файла EOF, возбуждается исключение EOFError.
Если загружен модуль readline, эта функция будет использовать его, чтобы обеспечить дополнительные возможности редактирования строки ввода и автоматического завершения. Для организации чтения ввода в Python 3 вместо этой функции следует использовать функцию input().
repr(object)
Возвращает строковое представление объекта object. В большинстве случа- ев возвращаемая строка содержит выражение, с помощью которого можно воспроизвести объект, если передать ее функции eval(). Следует помнить, что в Python 3 результатом этой функции может быть строка Юникода, ко-
Python 3 результатом этой функции может быть строка Юникода, ко-
3 результатом этой функции может быть строка Юникода, ко- торая не может быть отображена в терминале или в окне командной обо- лочки (вызывая исключение). Чтобы создать строковое представление объ- екта object в кодировке ASCII, можно воспользоваться функцией ascii().
reversed(s)
Создает итератор для обхода последовательности s в обратном порядке. Эта функция может работать только с последовательностями, реализующими методы __len__() и __getitem__(). Кроме того, индексы элементов s должны начинаться с 0. Функция не может применяться к генераторам и итерато- рам.
round(x [, n])
Округляет число x с плавающей точкой до ближайшего кратного «10 в сте- пени минус n». Если аргумент n опущен, используется значение по умолча- нию 0. Если число x оказывается одинаково близким к двум возможным результатам, в Python 2 округление будет выполнено до числа, дальше от-
Python 2 округление будет выполнено до числа, дальше от-
2 округление будет выполнено до числа, дальше от- стоящего от 0 (например, число 0.5 будет округлено до 1.0, а число -0.5 – до
-1.0
). В Python 3 округление будет выполнено до числа, стоящего ближе к 0, если предыдущая цифра четная, и до числа, дальше отстоящего от 0, в про- тивном случае (например, число 0.5 будет округлено до 0.0, число 1.5 будет округлено до 2).
set([items])
Создает множество, заполненное элементами итерируемого объекта items.
Аргумент items должен быть неизменяемым. Если аргумент items содержит другие множества, эти множества должны иметь тип frozenset. При вызове без аргумента возвращается пустое множество.
setattr(object, name, value)
Создает в объекте object атрибут name и записывает в него значение value.
Аргумент name должен быть строкой. Выполняет ту же операцию, что и ин- должен быть строкой. Выполняет ту же операцию, что и ин- быть строкой. Выполняет ту же операцию, что и ин- быть строкой. Выполняет ту же операцию, что и ин- строкой. Выполняет ту же операцию, что и ин- строкой. Выполняет ту же операцию, что и ин-
. Выполняет ту же операцию, что и ин-
Выполняет ту же операцию, что и ин- струкция object.name = value.

Встроенные функции и типы
271
slice([start,] stop [, step])
Возвращает объект среза, представленный указанными целыми числами.
Кроме того, объекты срезов создаются с использованием расширенного синтаксиса срезов a[i:j:k]. Дополнительные подробности о срезах приво- дятся в разделе «Методы последовательностей и отображений» в главе 3.
sorted(iterable [, key=keyfunc [, reverse=reverseflag]])
Создает отсортированный список из элементов итерируемого объекта
iterable
. В именованном аргументе key передается функция, принимаю- щая единственный аргумент, которая используется для преобразования значений, прежде чем они будут переданы функции сравнивания. В име- нованном аргументе reverse передается логический флаг, определяющий, должен ли список сортироваться в обратном порядке. Аргументы key и reverse должны передаваться как именованные аргументы, например sorted(a,key=get_name)
staticmethod(func)
Создает статический метод класса. Эта функция неявно вызывается деко- ратором @staticmethod.
str([object])
Тип, используемый для представления строк. В Python 2 строки состоят из 8-битных символов, тогда как в Python 3 строки состоят из символов
Юникода. Если функции передается аргумент object, создается строковое представление этого объекта, для чего вызывается его метод __str__(). Это та строка, которая выводится инструкцией print. При вызове без аргумен- та возвращается пустая строка.
sum(items [,initial])
Вычисляет сумму последовательности элементов итерируемого объекта
items
. В аргументе initial может передаваться начальное значение, которое по умолчанию равно 0. Эта функция работает только с числами.
super(type [, object])
Возвращает объект, представляющий суперклассы типа type. Чаще всего возвращаемый объект используется для вызова методов базового класса.
Например:
class B(A):
def foo(self):
super(B,self).foo()
Если в аргументе object передается объект, для него вызов функции isinstance(
object, type)
должен возвращать True. Если в аргументе object передается тип, он должен быть подклассом класса type. Дополнительные подробности приводятся в главе 7 «Классы и объектно-ориентированное программирование». В Python 3 допускается использовать функцию su- per()
без аргументов, при вызове из методов. В этом случае в аргументе type по умолчанию передается класс, в котором был определен метод, а в ар- гументе object передается первый аргумент метода. Хотя синтаксис стал

272
Глава 12. Встроенные функции более очевидным, тем не менее функция утратила обратную совместимость с Python 2, поэтому, если проблема переносимости программного кода име-
Python 2, поэтому, если проблема переносимости программного кода име-
2, поэтому, если проблема переносимости программного кода име- ет большое значение, такой синтаксис лучше не использовать.
tuple([items])
Тип, используемый для представления кортежей. Аргумент items должен быть итерируемым объектом, который будет использоваться для заполне- ния кортежа. Однако если items уже является кортежем, функция просто возвращает его без каких-либо изменений. При вызове без аргумента воз- вызове без аргумента воз- вызове без аргумента воз- без аргумента воз- без аргумента воз- аргумента воз- аргумента воз- воз- воз- вращается пустой кортеж.
type(object)
Базовый класс для всех типов в языке Python. Когда вызывается как функ-
Python. Когда вызывается как функ-
. Когда вызывается как функ- ция, возвращает тип объекта object. Возвращаемый тип – это класс объ- тип – это класс объ- тип – это класс объ-
– это класс объ- это класс объ- класс объ- класс объ- объ- объ- екта. Для обычных типов, таких как целые числа, числа с плавающей точ-
. Для обычных типов, таких как целые числа, числа с плавающей точ-
Для обычных типов, таких как целые числа, числа с плавающей точ- кой и списков, возвращаемый тип будет ссылаться на один из встроенных классов, таких как int, float, list и так далее. Для пользовательских объ- ектов типом является соответствующий класс. Для объектов, связанных с внутренней реализацией Python, обычно возвращается ссылка на один из классов, объявленных в модуле types.
type(name, bases, dict)
Создает новый объект type (как при объявлении нового класса). В аргумен- как при объявлении нового класса). В аргумен- при объявлении нового класса). В аргумен- при объявлении нового класса). В аргумен- объявлении нового класса). В аргумен- объявлении нового класса). В аргумен- нового класса). В аргумен- нового класса). В аргумен- класса). В аргумен- класса). В аргумен-
). В аргумен-
В аргумен- те name передается имя типа, в аргументе bases – кортеж базовых классов, а в аргументе dict – словарь, содержащий определения, соответствующие телу класса. Чаще всего эта функция используется при работе с метаклас- сами. Подробнее об этом рассказывается в главе 7.
unichr(x)
Преобразует целое или длинное целое число x, где 0 <= x <= 65535, в символ
Юникода. Функция определена только в Python 2. В Python 3 можно про-
Python 2. В Python 3 можно про-
2. В Python 3 можно про-
Python 3 можно про- можно про- про- про- сто использовать функцию chr(x).
unicode(string [,encoding [,errors]])
Функция определена только в Python 2. Преобразует обычную строку в строку Юникода. Аргумент encoding определяет кодировку строки. Если этот аргумент опущен, по умолчанию используется кодировка, возвращае- мая функцией sys.getdefaultencoding(). Аргумент errors определяет полити- ку обработки ошибок кодирования символов и может иметь одно из следу- ющих значений: ‘strict’, ‘ignore’, ‘replace’, ‘backslashreplace’ или ‘xmlchar- xmlchar- refreplace’
. Дополнительная информация приводится в главе 9 и в главе 3.
Недоступна в Python 3.
vars([object])
Возвращает таблицу символов объекта object (обычно хранится в атрибуте
__dict__
). При вызове без аргумента возвращается словарь, соответствую- щий локальному пространству имен. Словарь, возвращаемый этой функ- цией, должен рассматриваться как доступный только для чтения. Изме- нения в этом словаре не сохраняются в локальном пространстве имен или в таблице символов объекта.

Встроенные исключения
273
xrange([start,] stop [, step])
Т
ип, используемый для представления диапазонов целых чисел от start до stop, причем значение stop не входит в этот диапазон. В необязательном аргументе step передается шаг. Значения фактически нигде не сохраня- передается шаг. Значения фактически нигде не сохраня- шаг. Значения фактически нигде не сохраня- шаг. Значения фактически нигде не сохраня-
. Значения фактически нигде не сохраня-
Значения фактически нигде не сохраня- ются, а вычисляются по требованию, при попытке обращения. В Python 2 функция xrange() является предпочтительным способом определения диа- пазонов целочисленных значений для использования в циклах. В Python 3 функция xrange() была переименована в range(), а функция xrange() была ликвидирована. Значения аргументов start, stop и step ограничены мно- жеством значений целых чисел, допустимых для аппаратной платформы
(обычно 32 бита).
zip([s1 [, s2 [,..]]])
В Python 2 возвращает список кортежей, где n-й кортеж имеет вид (s1[n],
s2[n], ...)
. Длина возвращаемого списка равна длине самой короткой по- следовательности, полученной в виде аргумента. При вызове без аргумен- вызове без аргумен- вызове без аргумен- без аргумен- без аргумен- аргумен- аргумен- тов возвращается пустой список. В Python 3 функция действует похожим образом, но в качестве результата возвращается итератор, который воспро- изводит последовательность кортежей. В Python 2 использование функции zip()
с длинными входными последовательностями может приводить к по- треблению значительных объемов памяти. Чтобы избежать этого, вместо нее можно использовать функцию itertools.izip().
Встроенные исключения
Встроенные исключения объявляются в модуле exceptions, который всегда загружается перед запуском любой программы. Исключения объявлены как классы.
Базовые классы исключений
Следующие исключения играют роль базовых классов для всех остальных исключений:
BaseException
Базовый класс для всех исключений. Все встроенные исключения являют- ся производными этого класса.
Exception
Базовый класс для всех программных исключений, включая все встроен- ные исключения, кроме SystemExit, GeneratorExit и KeyboardInterrupt. Поль- зовательские исключения должны наследовать класс Exception.
ArithmeticError
Базовый класс для исключений, возбуждаемых арифметическими опера- класс для исключений, возбуждаемых арифметическими опера- класс для исключений, возбуждаемых арифметическими опера- для исключений, возбуждаемых арифметическими опера- для исключений, возбуждаемых арифметическими опера- исключений, возбуждаемых арифметическими опера- исключений, возбуждаемых арифметическими опера-
, возбуждаемых арифметическими опера- возбуждаемых арифметическими опера- арифметическими опера- арифметическими опера- опера- опера- циями, включая OverflowError, ZeroDivisionError и FloatingPointError.
LookupError
Базовый класс исключений, возникающих при обращении к недопустимо- му индексу или ключу, включая IndexError и KeyError.

274
Глава 12. Встроенные функции
EnvironmentError
Б
азовый класс для ошибок, возникающих за пределами интерпретатора
Python, включая IOError и OSError.
Предыдущие исключения никогда не возбуждаются явно. Однако они мо- гут использоваться для обработки определенных классов ошибок. Напри- мер, следующий фрагмент будет обрабатывать любые ошибки арифметиче- ских операций:
try:
# Некоторая операция
...
except ArithmeticError as e:
# Обработка арифметической ошибки
Экземпляры исключений
Когда возбуждается какое-либо исключение, создается экземпляр класса исключения. Этот экземпляр сохраняется в необязательной переменной, указанной в инструкции except. Например:
except IOError as e:
# Обработать ошибку
# ‘e’ – это экземпляр класса IOError
Экземпляры e исключений имеют ряд стандартных атрибутов, которые мо- гут использоваться для определенных целей.
e.args
Кортеж аргументов, полученных конструктором при возбуждении ис- ключения. В большинстве случаев этот кортеж содержит единственный элемент – строку с текстом сообщения об ошибке. Для исключений класса
EnvironmentError значением этого атрибута может быть кортеж из 2 или из 3 элементов, содержащий целочисленный код ошибки, строку с текстом со- общения об ошибке и, возможно, имя файла. Содержимое этого кортежа можно использовать для повторного возбуждения исключения в другом контексте; например, в другом процессе интерпретатора Python.
e.message
Строка с текстом сообщения, которое выводится при отображении инфор- мации об исключении (только в Python 2).
e.__cause__
Предыдущее исключение в явной цепочке исключений (только в Python 3).
Подробнее об этом рассказывается в приложении A.
e.__context__
Предыдущее исключение в неявной цепочке исключений (только в Py-
Py- thon 3). Подробнее об этом рассказывается в приложении A.
e.__traceback__
Объект с трассировочной информацией, ассоциированный с исключением
(только в Python 3). Подробнее об этом рассказывается в приложении A.

Встроенные исключения
275
Предопределенные классы исключений
Н
иже приводится список типов исключений, возбуждаемых программа- ми:
AssertionError
Не выполнено условие в инструкции assert.
AttributeError
Ошибка при попытке обращения к атрибуту или при попытке присвоить ему значение.
EOFError
Конец файла. Возбуждается встроенными функциями input() и raw_input().
Следует отметить, что большинство других операций ввода-вывода, таких как методы read() и readline() объектов файлов, по достижении конца фай- ла не возбуждают исключение, а возвращают пустую строку.
FloatingPointError
Ошибка выполнения операции над числами с плавающей точкой. Следу- ет отметить, что обработка исключений, возникающих в операциях над числами с плавающей точкой, является достаточно сложной проблемой, так как это единственное исключение, которое возбуждается, только если интерпретатор Python был настроен и скомпилирован с его поддержкой.
Чаще подобные ошибки не приводят к исключению, а воспроизводят ре- зультат, такой как float(‘nan’) или float(‘inf’). Является производным от класса ArithmeticError.
GeneratorExit
Возбуждается внутри функций-генераторов как сигнал о завершении ра- боты. Это происходит при преждевременном уничтожении генератора (до того, как будут исчерпаны все значения генератора) или при вызове метода close()
генератора. Если генератор проигнорирует это исключение, сам ге- нератор будет уничтожен, а исключение просто проигнорировано.
IOError
Ошибка операции ввода-вывода. В результате ошибки создается экземпляр
IOError с атрибутами errno, strerror и filename, где errno – целочисленный код ошибки, strerror – строка с текстом сообщения об ошибке и filename – имя файла. Является производным от класса EnvironmentError.
ImportError
Возбуждается, когда инструкция import не может отыскать модуль или когда инструкция from не может отыскать указанное имя в модуле.
IndentationError
Ошибка оформления отступов. Является производным от класса SyntaxEr- ror
IndexError
Выход индекса за пределы последовательности. Является производным от класса LookupError.

276
Глава 12. Встроенные функции
KeyError
Т
ребуемый ключ не найден в объекте отображения. Является производ- ным от класса LookupError.
KeyboardInterrupt
Возбуждается, когда пользователь нажимает клавишу прерывания про- граммы (обычно это комбинация
Ctrl+C
).
MemoryError
Ошибка нехватки памяти, допускающая возможность восстановления.
NameError
Требуемое имя не найдено в локальном или глобальном пространстве имен.
NotImplementedError
Нереализованная особенность. Может возбуждаться базовыми классами, когда происходит обращение к методу, который должен быть реализован в производных классах. Является производным от класса RuntimeError.
OSError
Ошибка операционной системы. В основном возбуждается функциями в модуле os. В результате ошибки создается такой же экземпляр, как и в случае с исключением IOError. Является производным от класса Environmen- tError
OverflowError
Возбуждается, когда в результате выполнения некоторой операции полу- чается слишком большое целое число. Это исключение обычно возникает при передаче больших целочисленных значений объектам, реализация ко- торых опирается на аппаратное представление целых чисел фиксирован- ного размера. Например, эта ошибка может возникнуть в объектах range или xrange, если передать им начальное или конечное значение, не умещаю- щееся в 32-битное представление. Является производным от класса Arith- meticError
ReferenceError
Возникает при попытке обращения к объекту по слабой ссылке, после того как сам объект уже был уничтожен. Дополнительную информацию можно найти в документации к модулю weakref.
RuntimeError
Ошибка, не подпадающая ни под одну другую категорию.
StopIteration
Возбуждается, чтобы известить об окончании итераций. Это обычно проис- ходит в методе next() объекта или внутри функции-генератора.
SyntaxError
Синтаксическая ошибка. Экземпляры этого исключения имеют атрибуты filename
, lineno, offset и text, которые могут использоваться для получения дополнительной информации.

Встроенные исключения
277
SystemError
Внутренняя ошибка интерпретатора. Значением этого исключения являет- ся строка с текстом, описывающим проблему.
SystemExit
Возбуждается функцией sys.exit(). Значением этого исключения является целое число – код завершения. Для немедленного завершения программы можно использовать функцию os._exit().
TabError
Непоследовательное использование символов табуляции. Возбуждается, когда интерпретатор Python запущен с ключом -tt. Является производным от класса SyntaxError.
TypeError
Возбуждается, когда оператор или функция применяется к объекту несов- местимого типа.
UnboundLocalError
Попытка обращения к несвязанной локальной переменной. Эта ошибка возникает при попытке обратиться к переменной до того, как она будет определена в функции. Является производным от класса NameError.
UnicodeError
Ошибка кодирования или декодирования символа Юникода. Является производным от класса ValueError.
UnicodeEncodeError
Ошибка кодирования символа Юникода. Является производным от класса
UnicodeError
UnicodeDecodeError
Ошибка декодирования символа Юникода. Является производным от класса UnicodeError.
UnicodeTranslateError
Ошибка при попытке преобразования символа Юникода. Является произ- водным от класса UnicodeError.
ValueError
Возбуждается, когда аргумент функции или операции имеет совместимый тип, но недопустимое значение.
WindowsError
Возбуждается в случае ошибки при обращении к системным вызовам в Windows. Является производным от класса OSError.
ZeroDivisionError
Деление на ноль. Является производным от класса ArithmeticError.

278
Глава 12. Встроенные функции
Встроенные предупреждения
В состав стандартной библиотеки Python входит модуль warnings, который обычно используется, чтобы сообщить программистам об использовании нерекомендуемых возможностей. Предупреждения возбуждаются вклю- чением программного кода, как показано ниже:
import warnings warnings.warn(“Флаг MONDO больше не поддерживается”, DeprecationWarning)
Несмотря на то что предупреждения возбуждаются средствами библио- течного модуля, тем не менее имена различных предупреждений являют- ся встроенными. Предупреждения до определенной степени напоминают исключения. Иерархия встроенных предупреждений наследует класс Ex- ception
Warning
Базовый класс для всех предупреждений. Является производным от клас- са Exception.
UserWarning
Универсальное предупреждение, определяемое пользователем. Является производным от класса Warning.
DeprecationWarning
Предупреждение на случай использования нерекомендуемых возможно- стей. Является производным от класса Warning.
SyntaxWarning
Предупреждение на случай использования нерекомендуемого синтаксиса.
Является производным от класса Warning.
RuntimeWarning
Предупреждение на случай использования особенностей, которые могут привести к проблемам во время выполнения. Является производным от класса Warning.
FutureWarning
Предупреждение о том, что поведение используемой возможности изме- нится в будущем. Является производным от класса Warning.
Предупреждения отличаются от исключений тем, что возбуждение преду- преждения с помощью функции warn() может приводить, а может не при- водить к остановке программы. Например, предупреждение может просто вызывать вывод какой-либо информации или приводить к исключению.
Фактическое поведение предупреждений может быть настроено средства- ми модуля warnings или с помощью ключа -W интерпретатора. Если в про- грамме используется какой-либо программный код, генерирующий пред- упреждение, после появления которого было бы желательно продолжить работу, предупреждение, преобразованное в исключение, можно перехва- тить с помощью инструкций try и except. Например:

Модуль future_builtins
279
try:
import md5
except DeprecationWarning:
pass
Следует отметить, что такой способ используется достаточно редко. Хотя он позволяет перехватывать предупреждения, преобразованные в исклю- чения, тем не менее он не подавляет вывод сообщений (для управления выводом предупреждений необходимо использовать модуль warnings). Кро- ме того, игнорирование предупреждений – это отличный способ написать программу, которая будет работать с ошибками после выхода новых версий
Python.
Модуль future_builtins
Модуль future_builtins, доступный только в Python 2, содержит реали-
Python 2, содержит реали-
2, содержит реали- зации встроенных функций, поведение которых изменилось в Python 3.
В модуле определены следующие функции:
ascii(object)
Воспроизводит тот же результат, что и функция repr(). Описание приво- дится в разделе «Встроенные функции» в этой главе.
filter(
function, iterable)
Создает итератор вместо списка. То же, что и функция itertools.ifilter().
hex(
object)
Создает строку с шестнадцатеричным представлением целого числа, но для получения целочисленного значения вместо метода __hex__() использу- ет специальный метод __index__().
map(
function, iterable, ...)
Создает итератор вместо списка. То же, что и функция itertools.imap().
oct(
object)
Создает строку с восьмеричным представлением целого числа, но для полу- чения целочисленного значения вместо метода __oct__() использует специ- альный метод __index__().
zip(
iterable, iterable, ... )
Создает итератор вместо списка. То же, что и функция itertools.izip().
Не забывайте, что список функций в этом модуле не является исчерпываю- щим списком изменений в модуле builtins. Например, в Python 3 функция raw_input()
была переименована в input(), а функция xrange() – в range().

1   ...   17   18   19   20   21   22   23   24   ...   82


написать администратору сайта