Лутц М. - Изучаем Python (1077325), страница 31
Текст из файла (страница 31)
Наряду с этим мы узнали, что базовые типы данных в языке РуФЬоп обладают большей гибкостью и более широкими возможностями, чем типы данных, доступные в низкоуровневых языках программирования, таких как С. Например, списки и словари избавляют нас от необходимости реализовать программный код поддержки коллекций и поиска. Списки — это упорядоченные коллекции объектов, а словари — это коллекции объектов, доступ к которым осуществляется по ключу, а не по позиции.
И словари, и списки могут быть вложенными, могут увеличиваться и уменьшаться по мере необходимости и могут содержать объекты любых типов. Более того, память, занимаемая ими, автоматически освобождается, как только будет утрачена последняя ссылка на них. Я опустил большую часть подробностей здесь, чтобы сделать знакомство как можно более кратким, поэтому вы не должны считать, что эта глава содержит все, что необходимо, В следующих главах мы будем рассматривать базовые типы языка более подробно, благодаря чему вы сможете получить более полную картину, В следующей главе мы приступим к всестороннему изучению чисел в языке Ру(Ьоп, Но для начала ознакомьтесь с контрольными вопросами.
Закрепление пройденного Контрольные вопросы В следующих главах мы более подробно будем исследовать понятия, введенные в этой главе, поэтому здесь мы охватим лишь самые общие направления: 1. Назовите четыре базовых типа данных в языке РуФЬоп. 2. Почему они называются базовыми7 3. Что означает термин «неизменяемый», и какие три базовых типа языка Ру»Ьоп являются неизменяемыми7 4. Что означает термин «последовательность», и какие три типа относятся к этой категории? 5.
Что означает термин «отображение», и какой базовый тип является отображением7 6. Что означает термин «полиморфизм», и почему он имеет такое важное значение? Эакреппение пройденного Ответы 1. 2. 3. 4. б. 6. К базовым типам объектов (данных) относятся числа, строки, списки, словари, кортежи и файлы. Множества, сами типы, йопе и логические значения также иногда относят к базовым типам. Существует несколько типов чисел (целые, длинные целые, с плавающей точкой и фиксированной точности) и два типа строк (обычные и в кодировке Юникод).
Базовыми они называются потому, что являются частью самого языка РуФЬоп и могут быть использованы в любой момент. Чтобы создать объект какого-либо другого типа, обычно бывает необходимо обращаться к функции из импортированного модуля, Для большинства базовых типов предусмотрен специальный синтаксис создания объектов, например, 'враз' — это выражение, которое создает строку и определяет набор операций, которые могут применяться к ней. Вследствие этого базовые типы жестко вшиты в синтаксис языка РуФЬоп.
Единственное отличие — объекты-файлы, для создания которых необходимо вызывать функцию ореп. «Неизменяемый» объект — это объект, который невозможно изменить после того, как он будет создан. К этой категории объектов относятся числа, строки и кортежи. Но даже при том, что вы не можете изменить «неизменяемый» объект на месте, вы всегда можете создать вместо него новый объект, выполнив выражение. «Последовательность» — это упорядоченная по местоположению коллекция объектов. К последовательностям относятся строки, списки и кортежи.
Ко всем этим типам могут применяться операции, общие для всех последовательностей, такие как обращение к элементам по их индексам, конкатенация и получение срезов. Но помимо этого каждый из этих типов имеет ряд специфичных методов. Под термином «отображение» подразумевается объект, который отображает ключи на ассоциированные с ними значения. Единственный базовый тип данных в языке Рубанов, который является отображением, — это словарь.
Отображения не подразумевают упорядочение элементов по их позиции, но они поддерживают возможность доступа к элементам по ключу, плюс ряд специфичных методов. «Полиморфизм» означает„что фактически выполняемая операция (такая как «) зависит от объектов, которые принимают в ней участие.
В языке Рубанов идея полиморфизма составляет ключевую концепцию (пожалуй, самую ключевую) — она не ограничивает применимость программного кода каким-то определенным типом данных, благодаря чему этот код обычно в состоянии автоматически обрабатывать объекты самых разных типов.
Числа С этой главы, мы начинаем погружаться в детали реализации языка Ру$Ьоп. Данные в этом языке имеют форму объектов — это либо встроенные объекты, входящие в состав самого языка, либо объекты, создаваемые с помощью языковых конструкций, Фактически объекты являются основой любой программы на языке РуФоп. Поскольку объекты представляют самое фундаментальное понятие для программирования на языке РуФЬоп, все наше внимание в первую очередь будет сосредоточено на объектах. В предыдущей главе мы коротко познакомились с базовыми типами объектов языка РуФЬоп.
И хотя в этой главе основные понятия были даны, мы старались избегать слишком специфичных подробностей в целях экономии книжного пространства. В этой главе мы приступаем к более внимательному изучению концепции типов данных, чтобы восполнить детали, о которых раньше умалчивалось. Кроме того, здесь мы рассмотрим некоторые типы, которые так или иначе связаны с числами, такие как множества и логические значения (Воо!еап). Итак, приступим к изучению чисел — первой категории типов данных в языке Ру$Ьоп.
Числовые типы в РУФоп Числовые типы в языке Ру$Ьоп не выделяются ничем необычным и наверняка покажутся вам знакомыми, если в прошлом вам уже приходилось использовать какой-либо язык программирования. Числа могут использоваться для представления информации о состоянии вашего банковского счета, о расстоянии до Марса, о числе посетителей вашего веб-сайта и всего, что можно выразить в числовой форме. Числа в языке Ру$Ьоп представлены не единственным типом, а целой категорией родственных типов.
Язык РуФЬоп поддерживает обычные Чисповые типы в РутЬоп типы объектов чисел (целые и с плавающей точкой), а также литералы— для их создания, и выражения — для их обработки. Кроме того, РуФЬоп предоставляет дополнительное программное обеспечение поддержки чисел, включая тип комплексного числа, тип чисел с неограниченной точностью представления, тип вещественных чисел с фиксированной точностью, множества, логические значения и целый ряд разнообразных библиотек для работы с числами.
В следующих нескольких разделах проводится обзор поддержки чисел в языке программирования Руоюп. Числовые литералы Помимо базовых типов данных язык Ру(Ьоп предоставляет самые обычные числовые типы: он поддерживает целые числа и числа с плавающей точкой (с дробной частью) и все синтаксические конструкции и операции, связанные с числами. Подобно языку С, Ру(Ьоп позволяет записывать целые числа с помощью шестнадцатеричных и восьмеричных литералов. Но в отличие от С, язык Ру(Ьоп дополнительно реализует тип комплексных чисел, а также длинные целые числа с неограниченной точностью представления (они могут содержать столько знаков, сколько позволит хранить объем оперативной памяти). В табл.
5.1 показано, как выглядят числа различных типов в языке РуФЬоп в тексте программы (то есть в виде литералов). Таблица 5.1. Числовсче литералы Интерпретация Литерал Обычные целые числа (1оп9 в языке С) 1234, -24, 0 9999999999999999999Е Длинные целые числа (с неограниченной точностью представления) Числа с плавающей точкой (Ооавте в языке С) 1 23, 3.14е-10, 4Е210, 4.0ет210 0177, ОХ977, ОХРЕ Восьмеричные н шестнадцатеричные лите- ралы целых чисел Зч4Ь 3 044, 05, 3,1 Литералы комплексных чисел Вообще в числовых типах языка Ру(Ьоп нет ничего сложного, но мне хотелось бы сделать несколько замечаний о принципах использования литералов в программном коде: Литералы целых чисел и чисел с плавающей точкой Целые числа записываются как строки, состоящие из десятичных цифр.
Числа с плавающей точкой могут содержать символ точки и/или необязательную экспоненту со знаком, которая начинается с символа е или Е. Если в записи числа обнаруживается точка или экспонента, интерпретатор РуФЬоп создает объект числа с плавающей точкой и использует вещественную (не целочисленную) математику, когда такой объект участвует в выражении. Правила записи Глава 5. Числа 144 вещественных чисел в языке Ру$Ьоп ничем не отличаются от пра- вил, используемых в языке С. Точность представления целых чисел и длинные целые Простые целые числа в языке Ру$Ьоп (первая строка в табл.