Марк Лутц - Изучаем Python, Четвертое издание (1184811), страница 33
Текст из файла (страница 33)
Документация. Потратьте хотя бы 17 минут на исследование библиотекиPython и руководства по языку программирования, чтобы получить представление о стандартной библиотеке и о структуре комплекта документации. Вам нужно понять, по крайней мере, где в руководстве находятсяописания основных тем. После этого вы легко сможете отыскать интересующую вас информацию.
В системе Windows это руководство находитсяв разделе Python меню кнопки Пуск (Start), а также в виде пункта Python Docs(Документация Python) в меню Help (Справка) в среде разработки IDLE или в Интернете по адресу: http://www.python.org/doc. Кроме того, хотелось бы такжесказать несколько слов о других руководствах и источниках документации,описываемых (включая PyDoc и функцию help) в главе 15. Если у вас естьсвободное время, займитесь исследованием веб-сайтов Python, а также вебсайта расширений сторонних разработчиков PyPy. В частности, ознакомьтесь со страницами документации и поиска на сайте Python.org – они могутоказаться для вас весьма значимыми ресурсами.Часть II.Типы и операцииГлава 4.Введение в типы объектов языка PythonНачиная с этой главы, мы приступаем к изучению языка Python.
В самомобщем виде можно сказать, что программы на языке Python выполняют некоторые действия над чем-то. «Некоторые действия» принимают форму операций, таких как сложение или конкатенация, а под «чем-то» подразумеваютсяобъекты, над которыми выполняются операции. В этой части книги мы сосредоточимся на этом «что-то» и на действиях, которые могут выполняться программой.Говоря более формальным языком, данные в языке Python представленыв форме объектов – либо встроенных, предоставляемых языком Python, либообъектов, которые мы создаем с применением конструкций языка Python илидругих инструментов, таких как библиотеки расширений, написанные на языке C.
Мы уточним это определение позднее, но если говорить по сути, объекты – это области памяти со значениями и ассоциированными с ними наборамиопераций.Объекты являются самым фундаментальным понятием в программированиина языке Python, поэтому эта глава начинается с обзора встроенных объектных типов языка Python.Однако для начала проясним, как эта глава вписывается в общую картинуязыка Python.
С более определенной точки зрения программы на языке Pythonможно разложить на такие составляющие, как модули, инструкции, выражения и объекты; при этом:1. Программы делятся на модули.2. Модули содержат инструкции.3. Инструкции состоят из выражений.4. Выражения создают и обрабатывают объекты.В главе 3 рассматривалась самая вершина этой иерархии – модули. Эта частькниги начинает рассмотрение с конца иерархии – с исследования встроенныхобъектов и выражений, в которых эти объекты могут участвовать.122Глава 4.
Введение в типы объектов языка PythonЗачем нужны встроенные типы?Если вам приходилось использовать языки программирования более низкогоуровня, такие как C или C++, то вы уже знаете, что значительная доля работы приходится на реализацию объектов, известных также как структурыданных, которые предназначены для представления составляющих предметной области. В таких языках программирования необходимо заниматься проработкой структур данных, управлять выделением памяти, реализовыватьфункции поиска и доступа к элементам структур и так далее.
Это достаточноутомительно (и способствует появлению ошибок) и, как правило, отвлекает отдостижения истинных целей.В типичных программах на языке Python в этом нет необходимости. Pythonпредоставляет мощную коллекцию объектных типов, встроенных непосредственно в язык, поэтому обычно нет никакой необходимости создавать собственные реализации объектов, предназначенных для решения поставленныхзадач. Фактически если у вас нет потребности в специальных видах обработки,которые не обеспечиваются встроенными типами объектов, вам всегда лучше использовать встроенные объекты вместо реализации своих собственных.И вот почему:•• Встроенные объекты упрощают создание программ.
Для решения простых задач часто вполне достаточно встроенных типов для представленияструктур данных предметной области. В вашем распоряжении имеются такие мощные инструментальные средства, как коллекции (списки) и таблицы поиска (словари), поэтому вы можете использовать их непосредственно.Благодаря встроенным объектным типам языка Python вы можете выполнить значительный объем работы.•• Встроенные объекты – это компоненты расширений. Для решения сложных задач вы можете создавать собственные объекты, используя для этогоклассы языка Python или интерфейсы языка C. Однако, как будет показанониже, объекты, реализованные вручную, обычно основаны на таких встроенных типах, как списки и словари.
Например, структура данных типа стекможет быть реализована как класс, основанный на использовании списков.•• Встроенные объекты часто более эффективны, чем созданные вручнуюструктуры данных. Встроенные типы языка Python используют уже оптимизированные структуры данных, реализованные на языке C для достижения высокой производительности. Вы можете сами создавать подобныетипы объектов, но вам придется приложить немало усилий, чтобы достичьскорости, которая обеспечивается встроенными типами объектов.•• Встроенные объекты – это стандартная часть языка.
В определенной степени Python многое заимствует как из языков, полагающихся на использование встроенных инструментальных средств (таких как LISP), так и полагающихся на мастерство программиста, который должен выполнить собственную реализацию инструментов и структур данных (таких как C++).В языке Python вы можете создавать собственные типы объектов, но в самом начале делать это не рекомендуется. Более того, из-за того, что встроенные компоненты являются стандартными составляющими языка Python,они всегда остаются неизменными, тогда как собственные структуры имеют свойство изменяться от случая к случаю.123Зачем нужны встроенные типы?Другими словами, встроенные типы объектов не только упрощают процесспрограммирования, но они обладают большей эффективностью и производительностью, чем большинство типов, созданных вручную.
Даже если вы создаете собственные типы объектов, встроенные объекты будут ядром любойпрограммы на Python.Базовые типы данных в языке PythonВ табл. 4.1 представлены некоторые встроенные типы объектов языка Pythonи некоторые синтаксические конструкции использования этих объектов в виделитералов – то есть выражения, которые генерируют эти объекты.1 Некоторыеиз этих типов наверняка покажутся вам знакомыми, если ранее вам приходилось работать с другими языками программирования. Например, числа и строки представляют числовые и текстовые значения соответственно, а файлы обеспечивают интерфейс для работы с файлами, хранящимися в компьютере.Таблица 4.1. Некоторые встроенные объектыТип объектаПример литерала/созданияЧисла1234, 3.1415, 3+4j, Decimal, FractionСтроки‘spam’, “guido’s” , b’a\x01c’Списки[1, [2, ‘three’], 4]Словари{‘food’: ‘spam’, ‘taste’: ‘yum’}Кортежи(1,’spam’, 4, ‘U’)Файлыmyfile = open(‘eggs’, ‘r’)Множестваset(‘abc’), {‘a’, ‘b’, ‘c’}Прочие базовые типыСами типы, None, логические значенияТипы структурных элементовпрограммФункции, модули, классы (часть IV,часть V, часть VI)Типы, имеющие отношениек реализацииКомпилированный программный код,стек вызовов (часть IV, часть VII)Таблица 4.1 содержит далеко не полный список, потому что объектами являются все данные, которые приходится обрабатывать в программах на языкеPython.
Например, когда на языке Python реализуется поиск текста по шаблону, – создаются объекты шаблонов, когда программируются сетевые взаимодействия, – используются объекты сокетов. Существуют и другие типы объектов, которые создаются в результате импорта и использования модулей, и всеони обладают своим собственным поведением.1В этой книге под термином литерал подразумевается выражение, создающее объект, которое иногда также называется константой. Следует иметь в виду, что термин «константа» не означает объекты и переменные, которые никогда не изменяются (то есть этот термин никак не связан с директивой const языка C++ или с понятием«неизменяемый» («immutable») в языке Python, – эта тема будет рассматриватьсяниже, в разделе «Неизменяемость»).124Глава 4.
Введение в типы объектов языка PythonВ следующих частях книги вы узнаете, что структурные элементы программ,такие как функции, модули и классы, также являются объектами в языке Python – они создаются с помощью инструкций и выражений, таких какdef, class, import и lambda, и могут свободно передаваться между различнымичастями сценариев, сохраняться в других объектах и так далее.