Язык программирования Python - [4]

Шрифт
Интервал

Смешивать вместе формы >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 имеет истинностное значение, логические операции можно проиллюстрировать с помощью логического типа:

>>>> for i in (False, True):

>...  for j in (False, True):

>...   print i, j, ":", i and j, i or j, not i

>...

>...

>False False : False False True

>False True : False True True

>True False : False True False

>True True : True True False

Следует отметить, что Python даже не вычисляет второй операнд операции >and или >or, если ее исход ясен по первому операнду. Таким образом, если первый операнд истинен, он и возвращается как результат >or, в противном случае возвращается второй операнд. Для операции >and все аналогично.

Тип string и тип unicode

В Python строки бывают двух типов: обычные и Unicode–строки. Фактически строка — это последовательность символов (в случае обычных строк можно сказать «последовательность байтов»). Строки–константы можно задать в программе с помощью строковых литералов. Для литералов наравне используются как апострофы (


Рекомендуем почитать
Изучаем Java EE 7

Java Enterprise Edition (Java EE) остается одной из ведущих технологий и платформ на основе Java. Данная книга представляет собой логичное пошаговое руководство, в котором подробно описаны многие спецификации и эталонные реализации Java EE 7. Работа с ними продемонстрирована на практических примерах. В этом фундаментальном издании также используется новейшая версия инструмента GlassFish, предназначенного для развертывания и администрирования примеров кода. Книга написана ведущим специалистом по обработке запросов на спецификацию Java EE, членом наблюдательного совета организации Java Community Process (JCP)


Pro Git

Разработчику часто требуется много сторонних инструментов, чтобы создавать и поддерживать проект. Система Git — один из таких инструментов и используется для контроля промежуточных версий вашего приложения, позволяя вам исправлять ошибки, откатывать к старой версии, разрабатывать проект в команде и сливать его потом. В книге вы узнаете об основах работы с Git: установка, ключевые команды, gitHub и многое другое.В книге рассматриваются следующие темы:основы Git;ветвление в Git;Git на сервере;распределённый Git;GitHub;инструменты Git;настройка Git;Git и другие системы контроля версий.


Java 7

Рассмотрено все необходимое для разработки, компиляции, отладки и запуска приложений Java. Изложены практические приемы использования как традиционных, так и новейших конструкций объектно-ориентированного языка Java, графической библиотеки классов Swing, расширенной библиотеки Java 2D, работа со звуком, печать, способы русификации программ. Приведено полное описание нововведений Java SE 7: двоичная запись чисел, строковые варианты разветвлений, "ромбовидный оператор", NIO2, новые средства многопоточности и др.


Фундаментальные алгоритмы и структуры данных в Delphi

Книга "Фундаментальные алгоритмы и структуры данных в Delphi" представляет собой уникальное учебное и справочное пособие по наиболее распространенным алгоритмам манипулирования данными, которые зарекомендовали себя как надежные и проверенные многими поколениями программистов. По данным журнала "Delphi Informant" за 2002 год, эта книга была признана сообществом разработчиков прикладных приложений на Delphi как «самая лучшая книга по практическому применению всех версий Delphi».В книге подробно рассматриваются базовые понятия алгоритмов и основополагающие структуры данных, алгоритмы сортировки, поиска, хеширования, синтаксического разбора, сжатия данных, а также многие другие темы, тесно связанные с прикладным программированием.


Питон — модули, пакеты, классы, экземпляры

Python - объектно-ориентированный язык сверхвысокого уровня. Python, в отличии от Java, не требует исключительно объектной ориентированности, но классы в Python так просто изучить и так удобно использовать, что даже новые и неискушенные пользователи быстро переходят на ОО-подход.


Как пасти котов. Наставление для программистов, руководящих другими программистами

«Как пасти котов» – это книга о лидерстве и руководстве, о том, как первое совмещать со вторым. Это, если хотите, словарь трудных случаев управления IT-проектами. Программист подобен кошке, которая гуляет сама по себе. Так уж исторически сложилось. Именно поэтому так непросто быть руководителем команды разработчиков. Даже если вы еще месяц назад были блестящим и дисциплинированным программистом и вдруг оказались в роли менеджера, вряд ли вы знаете, с чего надо начать, какой выбрать стиль руководства, как нанимать и увольнять сотрудников, проводить совещания, добиваться своевременного выполнения задач.