Читаем Язык программирования Python полностью

Кстати, все исключения выстроены в иерархию классов, поэтому ZeroDivisionError может быть поймана как ArithmeticError, если соответствующая часть except будет идти раньше.

Для утверждений применяется специальный оператор assert. Он возбуждает AssertionError, если заданное в нем условие неверно. Этот оператор используют для самопроверки программы. В оптимизированном коде он не выполняется, поэтому строить на нем логику алгоритма нельзя. Пример:

Листинг

c = a + b

assert c == a + b

Кроме описанной формы оператора, есть еще форма try–finally для гарантированного выполнения некоторых действий при передаче управления изнутри оператора try–finally вовне. Он может применяться для освобождения занятых ресурсов, что требует обязательного выполнения, независимо от произошедших внутри катаклизмов:

Листинг

try:

finally:

print «Обработка гарантированно завершена»

Смешивать вместе формы try–except и try–finally нельзя.

Встроенные типы данных

Как уже говорилось, все данные в Python представлены объектами. Имена являются лишь ссылками на эти объекты и не несут нагрузки по декларации типа. Значения встроенных типов имеют специальную поддержку в синтаксисе языка: можно записать литерал строки, числа, списка, кортежа, словаря (и их разновидностей). Синтаксическую же поддержку операций над встроенными типами можно легко сделать доступной и для объектов определяемых пользователей классов.

Следует также отметить, что объекты могут быть неизменчивыми и изменчивыми. Например, строки в Python являются неизменчивыми, поэтому операции над строками создают новые строки.

Карта встроенных типов (с именами функций для приведения к нужному типу и именами классов для наследования от этих типов):

специальные типы: None, NotImplemented и Ellipsis;

числа;

целые

обычное целое int

целое произвольной точности long

логический bool

число с плавающей точкой float

комплексное число complex

последовательности;

неизменчивые:

строка str;

Unicode–строка unicode;

кортеж tuple;

изменчивые:

список list;

отображения:

словарь dict

объекты, которые можно вызвать:

функции (пользовательские и встроенные);

функции–генераторы;

методы (пользовательские и встроенные);

классы (новые и «классические»);

экземпляры классов (если имеют метод __call__);

модули;

классы (см. выше);

экземпляры классов (см. выше);

файлы file;

вспомогательные типы buffer, slice.

Узнать тип любого объекта можно с помощью встроенной функции type.

Тип int и long

Два типа: int (целые числа) и long (целые произвольной точности) служат моделью для представления целых чисел. Первый соответствует типу long в компиляторе C для используемой архитектуры. Числовые литералы можно записать в системах счисления с основанием 8, 10 или 16:

Листинг

# В этих литералах записано число 10

print 10, 012, 0xA, 10L

Набор операций над числами — достаточно стандартный как по семантике, так и по обозначениям:

Листинг

>>> print 1 + 1, 3 — 2, 2*2, 7/4, 5%3

2 1 4 1 2

>>> print 2L ** 1000

107150860718626732094842504906000181056140481170553360744375038

837035105112493612249319837881569585812759467291755314682518714

528569231404359845775746985748039345677748242309854210746050623

711418779541821530464749835819412673987675591655439460770629145

71196477686542167660429831652624386837205668069376

>>> print 3 < 4 < 6, 3 >= 5, 4 == 4, 4 != 4 # сравнения

True False True False

>>> print 1 << 8, 4 >> 2, ~4 # побитовые сдвиги и инверсия

256 1–5

>>> for i, j in (0, 0), (0, 1), (1, 0), (1, 1):

… print i, j, ":", i & j, i | j, i ^ j # побитовые операции

0 0 : 0 0 0

0 1 : 0 1 1

1 0 : 0 1 1

1 1 : 1 1 0

Значения типа int должны покрывать диапазон от–2147483648 до 2147483647, а точность целых произвольной точности зависит от объема доступной памяти.

Стоит заметить, что если в результате операции получается значение, выходящее за рамки допустимого, тип int может быть неявно преобразован в long:

Листинг

>>> type(-2147483648)

>>> type(-2147483649)

Также нужно быть осторожным при записи констант. Нули в начале числа — признак восьмеричной системы счисления, в которой нет цифры 8:

Листинг

>>> 008

File "", line 1

008

^

SyntaxError: invalid token

Тип float

Соответствует C–типу double для используемой архитектуры. Записывается вполне традиционным способом либо через точку, либо в нотации с экспонентой:

Листинг

>>> pi = 3.1415926535897931

>>> pi ** 40

7.6912142205156999e+19

Кроме арифметических операций, можно использовать операции из модуля math.

Примечание:

Для финансовых расчетов лучше применять более подходящий тип.

Из полезных встроенных функций можно вспомнить round, abs.

Тип complex

Литерал мнимой части задается добавлением j в качестве суффикса (перемножаются мнимые единицы):

Листинг

>>> -1j * -1j

(-1–0j)

Тип реализован на базе вещественного. Кроме арифметических операций, можно использовать операции из модуля cmath.

Тип bool

Подтип целочисленного типа для «канонического» обозначения логических величин. Два значения: True (истина) и False (ложь) - вот и все, что принадлежит этому типу. Как уже говорилось, любой объект Python имеет истинностное значение, логические операции можно проиллюстрировать с помощью логического типа:

Листинг

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

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

Основы программирования в Linux
Основы программирования в Linux

В четвертом издании популярного руководства даны основы программирования в операционной системе Linux. Рассмотрены: использование библиотек C/C++ и стан­дартных средств разработки, организация системных вызовов, файловый ввод/вывод, взаимодействие процессов, программирование средствами командной оболочки, создание графических пользовательских интерфейсов с помощью инструментальных средств GTK+ или Qt, применение сокетов и др. Описана компиляция программ, их компоновка c библиотеками и работа с терминальным вводом/выводом. Даны приемы написания приложений в средах GNOME® и KDE®, хранения данных с использованием СУБД MySQL® и отладки программ. Книга хорошо структурирована, что делает обучение легким и быстрым. Для начинающих Linux-программистов

Нейл Мэтью , Ричард Стоунс , Татьяна Коротяева

ОС и Сети / Программирование / Книги по IT
97 этюдов для архитекторов программных систем
97 этюдов для архитекторов программных систем

Успешная карьера архитектора программного обеспечения требует хорошего владения как технической, так и деловой сторонами вопросов, связанных с проектированием архитектуры. В этой необычной книге ведущие архитекторы ПО со всего света обсуждают важные принципы разработки, выходящие далеко за пределы чисто технических вопросов.?Архитектор ПО выполняет роль посредника между командой разработчиков и бизнес-руководством компании, поэтому чтобы добиться успеха в этой профессии, необходимо не только овладеть различными технологиями, но и обеспечить работу над проектом в соответствии с бизнес-целями. В книге более 50 архитекторов рассказывают о том, что считают самым важным в своей работе, дают советы, как организовать общение с другими участниками проекта, как снизить сложность архитектуры, как оказывать поддержку разработчикам. Они щедро делятся множеством полезных идей и приемов, которые вынесли из своего многолетнего опыта. Авторы надеются, что книга станет источником вдохновения и руководством к действию для многих профессиональных программистов.

Билл де Ора , Майкл Хайгард , Нил Форд

Программирование, программы, базы данных / Базы данных / Программирование / Книги по IT
Программист-прагматик. Путь от подмастерья к мастеру
Программист-прагматик. Путь от подмастерья к мастеру

Находясь на переднем крае программирования, книга "Программист-прагматик. Путь от подмастерья к мастеру" абстрагируется от всевозрастающей специализации и технических тонкостей разработки программ на современном уровне, чтобы исследовать суть процесса – требования к работоспособной и поддерживаемой программе, приводящей пользователей в восторг. Книга охватывает различные темы – от личной ответственности и карьерного роста до архитектурных методик, придающих программам гибкость и простоту в адаптации и повторном использовании.Прочитав эту книгу, вы научитесь:Бороться с недостатками программного обеспечения;Избегать ловушек, связанных с дублированием знания;Создавать гибкие, динамичные и адаптируемые программы;Избегать программирования в расчете на совпадение;Защищать вашу программу при помощи контрактов, утверждений и исключений;Собирать реальные требования;Осуществлять безжалостное и эффективное тестирование;Приводить в восторг ваших пользователей;Формировать команды из программистов-прагматиков и с помощью автоматизации делать ваши разработки более точными.

А. Алексашин , Дэвид Томас , Эндрю Хант

Программирование / Книги по IT