Главная страница
Навигация по странице:

  • Базовые типы данных в языке Python

  • Тип объекта Пример литерала/создания

  • 123 + 222

  • 3.1415 * 2

  • Операции над последовательностями

  • S = Spam >>> len(S)

  • S[ 1]

  • Математический анализ. 3е издание


    Скачать 4.86 Mb.
    Название3е издание
    АнкорМатематический анализ
    Дата04.02.2022
    Размер4.86 Mb.
    Формат файлаpdf
    Имя файлаpython_01.pdf
    ТипДокументы
    #351981
    страница15 из 98
    1   ...   11   12   13   14   15   16   17   18   ...   98
    107
    Что произошло? Если вы используете версию Python более новую,
    чем Release 1.5, скорее всего вы увидите кажущийся странным ре
    зультат, который будет описан в следующей части книги. При ис
    пользовании версий Python, старее 1.5.1, остановить работу этого программного кода на большинстве платформ вам поможет комби
    нация клавиш
    CtrlC. Как вы думаете, в чем причина происходяще
    го? Что вывел интерпретатор после нажатия комбинации клавиш
    CtrlC?
    Если вы используете версию Python более старую, чем 1.5.1, преж
    де чем выполнить это упражнение, обязательно проверьте, имеет
    ся ли возможность прерывать работу программ комбинацией кла
    виш
    CtrlC, в противном случае вам придется ждать очень долго.
    7. Документация. Потратьте по крайней мере 17 минут на исследова
    ние библиотеки Python и руководства по языку программирования,
    чтобы получить представление о стандартной библиотеке и о струк
    туре комплекта документации. Вам нужно понять по крайней мере,
    где в руководстве находятся описания основных тем. После этого вы легко сможете отыскать интересующую вас информацию. В системе
    Windows это руководство находится в разделе
    Python меню кнопки
    Пуск (Start), а также в виде пункта Python Docs (Документация Python)
    в меню
    Help (Справка) в среде разработки IDLE или в Интернете по ад
    ресу: http://www.python.org/doc. Кроме того, хотелось бы также ска
    зать несколько слов о других руководствах и источниках докумен
    тации, описываемых (включая PyDoc и функцию help) в главе 14.
    Если у вас есть свободное время, займитесь исследованием вебсай
    тов Python и Vaults of Parnassus, а также вебсайта расширений сто
    ронних разработчиков PyPy. В частности, ознакомьтесь со страни
    цами документации и поиска на сайте Python.org – они могут ока
    заться для вас весьма важными ресурсами.

    II
    Типы и операции

    4
    Введение в типы объектов языка Python
    Начиная с этой главы, мы приступаем к изучению языка Python. В са
    мом общем виде можно сказать, что программы на языке Python вы
    полняют некоторые действия над чемто. «Некоторые действия» при
    нимают форму операций, таких как сложение или конкатенация, а под
    «чемто» подразумеваются объекты, над которыми выполняются опе
    рации. В этой части книги мы сосредоточимся на этом «чтото» и на действиях, которые могут выполняться программой.
    Говоря более формальным языком, данные в языке Python представ
    лены в форме объектов – встроенных, предоставляемых языком Py
    thon, или объектов, которые мы создаем с помощью других инстру
    ментов, таких как библиотеки расширений, написанные на языке C.
    Мы уточним это определение позднее, но если говорить по сути, объек
    ты – это области памяти со значениями и ассоциированными с ними наборами операций.
    Объекты являются самым фундаментальным понятием в программи
    ровании на языке Python, поэтому эта глава начинается с обзора встроенных объектных типов языка Python.
    Однако для начала проясним, как эта глава вписывается в общую кар
    тину языка Python. С более определенной точки зрения программы на языке Python можно разложить на такие составляющие, как модули,
    инструкции, выражения и объекты; при этом:
    1. Программы делятся на модули.
    2. Модули содержат инструкции.
    3. Инструкции состоят из выражений.
    4. Выражения создают и обрабатывают объекты.
    В главе 3 рассматривалась самая вершина этой иерархии – модули. Эта часть книги начинает рассмотрение с конца иерархии – с исследования

    112
    Глава 4. Введение в типы объектов языка Python встроенных объектов и выражений, в которых эти объекты могут уча
    ствовать.
    Зачем нужны встроенные типы?
    Если вам приходилось использовать языки программирования более низкого уровня, такие как C или C++, то вы уже знаете, что значи
    тельная доля работы приходится на реализацию объектов, известных также как структуры данных, которые предназначены для представ
    ления компонентов внутри приложений. В таких языках программи
    рования необходимо заниматься проработкой структур данных,
    управлять выделением памяти, реализовывать функции поиска и дос
    тупа к элементам структур и т. д. Это достаточно утомительно (и спо
    собствует появлению ошибок) и, как правило, отвлекает от достиже
    ния истинных целей.
    В типичных программах на языке Python в этом нет необходимости.
    Python предоставляет мощную коллекцию объектных типов, встроен
    ных непосредственно в язык, поэтому обычно нет никакой необходи
    мости создавать собственные реализации объектов, предназначенных для решения поставленных задач. Фактически, если у вас нет потреб
    ностей в специальных видах обработки, которые не обеспечиваются встроенными типами объектов, вам всегда лучше использовать встро
    енные объекты вместо реализации своих собственных. И вот почему:

    Встроенные объекты упрощают создание программ. Для решения простых задач часто вполне достаточно встроенных типов для пред
    ставления структур данных проблемной области. В вашем распоря
    жении имеются такие мощные инструментальные средства, как коллекции (списки) и таблицы поиска (словари), поэтому вы може
    те использовать их непосредственно. Благодаря встроенным объ
    ектным типам языка Python вы можете выполнить значительный объем работы.

    Встроенные объекты – это компоненты расширений. Для решения сложных задач вы можете создавать собственные объекты, исполь
    зуя для этого классы языка Python или интерфейсы языка C. Одна
    ко, как будет показано ниже, объекты, реализованные вручную,
    обычно основаны на таких встроенных типах, как списки и слова
    ри. Например, структура данных типа стек может быть реализова
    на как класс, основанный на использовании списков.

    Встроенные объекты часто более эффективны, чем созданные вруч!
    ную структуры данных. Встроенные типы языка Python использу
    ют уже оптимизированные структуры данных, реализованные на языке C для достижения высокой производительности. Вы можете сами создавать подобные типы объектов, но вам придется прило
    жить немало усилий, чтобы достичь скорости, которая обеспечива
    ется встроенными типами объектов.

    Зачем нужны встроенные типы?
    113

    Встроенные объекты – это стандартная часть языка. В определен
    ной степени Python многое заимствует как из языков, полагающихся на использование встроенных инструментальных средств (таких как
    LISP), так и полагающихся на мастерство программиста, который должен выполнить собственную реализацию инструментов и струк
    тур данных (таких как C++). В языке Python вы можете создавать собственные типы объектов, но в самом начале делать это не реко
    мендуется. Более того, изза того, что встроенные компоненты яв
    ляются стандартными составляющими языка Python, они всегда остаются неизменными, тогда как собственные структуры имеют свойство изменяться от случая к случаю.
    Другими словами, встроенные типы объектов не только упрощают про
    цесс программирования, но они обладают большей эффективностью и производительностью, чем большинство типов, созданных вручную.
    Даже если вы создаете собственные типы объектов, встроенные объек
    ты будут ядром любой программы на Python.
    Базовые типы данных в языке Python
    В табл. 4.1 представлены некоторые встроенные типы объектов языка
    Python и некоторые синтаксические конструкции использования этих объектов в виде литералов – то есть выражения, которые генерируют эти объекты.
    1
    Некоторые из этих типов наверняка покажутся вам зна
    комыми, если ранее вам приходилось работать с другими языками про
    граммирования. Например, числа и строки представляют числовые и текстовые значения соответственно, а файлы обеспечивают интер
    фейс для работы с файлами, хранящимися в компьютере.
    Таблица 4.1. Некоторые встроенные объекты
    1
    В этой книге под термином литерал подразумевается выражение, создаю
    щее объект, которое иногда также называется константой. Следует иметь в виду, что термин «константа» не означает объектов и переменных, кото
    рые никогда не изменяются (то есть этот термин никак не связан с директи
    вой const языка C++ или с понятием «неизменяемый» («immutable») в язы
    ке Python – эта тема будет рассматриваться ниже, в этой же главе).
    Тип объекта
    Пример литерала/создания
    Числа
    1234, 3.1415, 999L, 3+4j, Decimal
    Строки 'spam', "guido's"
    Списки
    [1, [2, 'three'], 4]
    Словари
    {'food': 'spam', 'taste': 'yum'}
    Кортежи
    (1,'spam', 4, 'U')
    Файлы myfile = open('eggs', 'r')
    Прочие типы
    Множества, сами типы, None, логические значения

    114
    Глава 4. Введение в типы объектов языка Python
    Таблица 4.1 содержит далеко не полный список, потому что объектами являются все данные, которые приходится обрабатывать в программах на языке Python. Например, когда на языке Python мы реализуется по
    иск текста по шаблону – создаются объекты шаблонов, когда програм
    мируются сетевые взаимодействия – используются объекты сокетов.
    Существуют и другие типы объектов, которые создаются в результате импорта и использования модулей, и все они обладают своим собствен
    ным поведением.
    Типы объектов, перечисленные в табл. 4.1, мы назвали базовыми, по
    тому что они встроены непосредственно в язык Python, то есть для соз
    дания большинства из них используется вполне определенный син
    таксис. Например, когда выполняется следующий программный код:
    >>> 'spam'
    то, говоря техническим языком, выполняется выражениелитерал, ко
    торое генерирует и возвращает новый строковый объект. Такова специ
    фика синтаксиса Python создания этого объекта. Похожим образом вы
    ражение, заключенное в квадратные скобки, создает список, заклю
    ченное в фигурные скобки – словарь и т. д. Хотя, как вы сможете убе
    диться, в языке Python отсутствует конструкция объявления типа, сам синтаксис выполняемых выражений задает типы создаваемых и ис
    пользуемых объектов. Фактически, выражения, создающие объекты,
    подобные тем, что представлены в табл. 4.1, в языке Python являются источниками типов.
    Не менее важно отметить, что как только будет создан объект, он будет ассоциирован со своим собственным набором операций на протяжении всего времени существования – над строками можно будет выполнять только строковые операции, над списками – только операции, приме
    нимые к спискам. Как вы узнаете далее, в языке Python используется
    динамическая типизация
    (типы данных определяется автоматиче
    ски, и их не требуется объявлять в программном коде), но при этом он является языком со строгой типизацией (вы сможете выполнять над объектом только те операции, которые применимы к его типу).
    Функционально типы объектов, представленные в табл. 4.1, являются более универсальными и более эффективными, чем может показаться.
    Например, вы узнаете, что списки и словари являются достаточно мощными средствами представления данных, которые обеспечивают поддержку коллекций и функций поиска, которые в низкоуровневых языках программирования приходится реализовывать вручную. Гово
    ря коротко, списки обеспечивают поддержку упорядоченных коллек
    ций других объектов, а словари реализуют возможность хранения объ
    ектов по ключам. И списки, и словари могут быть вложенными, по ме
    ре необходимости могут увеличиваться и уменьшаться в размерах и мо
    гут содержать объекты любых типов.
    В последующих главах мы подробно изучим каждый из типов объек
    тов, перечисленных в табл. 4.1. Но прежде чем углубляться в детали,

    Числа
    115
    давайте познакомимся с базовыми типами объектов Python в действии.
    Оставшаяся часть главы представляет собой обзор операций, которые мы более подробно будем исследовать в последующих главах. Не ждите в этой главе исчерпывающих объяснений, поскольку основная ее цель состоит в том, чтобы разжечь ваш аппетит и представить некоторые ба
    зовые идеи. Однако лучший способ чтото начать – это просто начать,
    поэтому перейдем сразу к программному коду.
    Числа
    Если в прошлом вам приходилось заниматься программированием,
    некоторые типы объектов из табл. 4.1 скорее всего покажутся вам зна
    комыми. Но даже если это не так, числа являются чрезвычайно про
    стым понятием. Базовый набор объектов языка Python включает в се
    бя вполне ожидаемые типы: целые числа (числа без дробной части),
    числа с плавающей точкой (грубо говоря, числа с десятичной точкой)
    и более экзотические типы («длинные» целые числа с неограниченной точностью, комплексные числа с мнимой частью, числа с фиксирован
    ной десятичной точкой и множества).
    Несмотря на наличие некоторых необычных типов, базовые числовые типы в языке Python действительно являются базовыми. Числа в Py
    thon поддерживают набор самых обычных математических операций.
    Например, символ «плюс» (+) означает сложение, символ «звездочка»
    (*) – умножение, а два символа «звездочка» (**) – возведение в степень:
    >>> 123 + 222 # Целочисленное сложение
    345
    >>> 1.5 * 4 # Умножение вещественных чисел
    6.0
    >>> 2 ** 100 # 2 в степени 100
    1267650600228229401496703205376L
    Обратите внимание на символ L в конце результата последней опера
    ции: когда возникает необходимость в более высокой точности, Python автоматически преобразует целые числа в «длинные» целые. Напри
    мер, вы можете попробовать отыскать 2 в степени 1 000 000 (но едва ли стоит это делать, так как на экран будет выведено число длиной более
    300 000 знаков, что может занять продолжительное время!). Посмот
    рите, что происходит при выводе чисел с плавающей точкой:
    >>> 3.1415 * 2 # repr: в виде кода
    6.2830000000000004
    >>> print 3.1415 * 2 # str: более удобочитаемо
    6.283
    Первый результат – это не ошибка, проблема здесь связана с отображе
    нием. Оказывается, вывести содержимое любого объекта можно двумя способами: с полной точностью (как в первом результате) и в форме,
    более удобной для восприятия человеком (как во втором результате).

    116
    Глава 4. Введение в типы объектов языка Python
    Формально первая форма называется repr (объект в виде кода), а вто
    рая, более дружественная к пользователю, – str. Различия между ни
    ми станут более понятны, когда мы приступим к изучению классов,
    а пока, если чтото выглядит непонятным, попробуйте вывести тот же результат с помощью инструкции print.
    Помимо выражений для выполнения операций с числами в составе Py
    thon есть несколько полезных модулей:
    >>> import math
    >>> math.pi
    3.1415926535897931
    >>> math.sqrt(85)
    9.2195444572928871
    Модуль math содержит более сложные математические функции, а мо
    дуль random реализует генератор случайных чисел и функцию случай
    ного выбора (в данном случае из списка, о котором будет рассказы
    ваться ниже, в этой же главе):
    >>> import random
    >>> random.random()
    0.59268735266273953
    >>> random.choice([1, 2, 3, 4])
    1
    Кроме того, Python включает в себя более экзотические числовые объ
    екты, такие как комплексные числа, числа с фиксированной десятич
    ной точкой и множества, а среди свободно распространяемых расшире
    ний можно найти и другие числовые типы (например, матрицы и век
    торы). Обсуждение этих типов будет приводиться далее в этой книге.
    Пока что мы использовали Python как простой калькулятор, но чтобы иметь большую возможность судить о встроенных типах, перейдем к строкам.
    Строки
    Строки используются для записи текстовой информации, а также про
    извольных последовательностей байтов. Это наш первый пример после+
    довательностей
    , или упорядоченных коллекций других объектов по их позиции, в языке Python. Последовательности поддерживают поря
    док размещения элементов, которые они содержат, слева направо: эле
    менты сохраняются и извлекаются, исходя из их позиции в последова
    тельности. Строго говоря, строки являются последовательностями од
    носимвольных строк. Другими типами последовательностей являются списки и кортежи (будут описаны ниже).
    Операции над последовательностями
    Будучи последовательностями, строки поддерживают операции, пред
    полагающие определенный порядок позиционирования элементов.

    Строки
    117
    Например, если имеется четырехсимвольная строка, то с помощью встроенной функции len можно проверить ее длину, а отдельные эле
    менты строки извлечь с помощью выражений индексирования:
    >>> S = 'Spam'
    >>> len(S) # Длина
    4
    >>> S[0] # Первый элемент в S, счет начинается с позиции 0
    'S'
    >>> S[1] # Второй элемент слева
    'p'
    В языке Python индексы реализованы в виде смещений от начала,
    и потому индексация начинается с 0: первый элемент имеет индекс 0,
    второй – 1 и т. д. В языке Python предусмотрена возможность индекса
    ции в обратном порядке, от конца:
    >>> S[ 1] # Последний элемент в конце S
    'm'
    >>> S[ 2] # Второй элемент с конца
    'a'
    Формально отрицательные индексы просто складываются с длиной строки, поэтому следующие две операции эквивалентны (хотя первая проще записывается и более понятна, чем вторая):
    >>> S[ 1] # Последний элемент в S
    'm'
    >>> S[len(S) 1] # Отрицательная индексация, более сложный способ
    'm'
    Примечательно, что внутри квадратных скобок допускается использо
    вать не только жестко заданные числовые литералы, но и любые дру
    гие выражения – везде, где Python ожидает получить значение, можно использовать литералы, переменные или любые выражения. Весь син
    таксис языка Python следует этому общему принципу.
    В дополнение к простой возможности индексирования по номеру пози
    ции последовательности поддерживают более общую форму индекси
    рования, известную как получение среза (slicing), которая обеспечива
    ет возможность извлечения за одну операцию целого раздела (среза).
    >>>
    1   ...   11   12   13   14   15   16   17   18   ...   98


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