Главная » Просмотр файлов » М. Лутц - Изучаем Python (4-е издание)- 2011

М. Лутц - Изучаем Python (4-е издание)- 2011 (1126907), страница 33

Файл №1126907 М. Лутц - Изучаем Python (4-е издание)- 2011 (М. Лутц - Изучаем Python (4-е издание)- 2011) 33 страницаМ. Лутц - Изучаем Python (4-е издание)- 2011 (1126907) страница 332019-05-11СтудИзба
Просмтор этого файла доступен только зарегистрированным пользователям. Но у нас супер быстрая регистрация: достаточно только электронной почты!

Текст из файла (страница 33)

Числа в Python поддерживают набор самых обычных математических операций. Например, символ«плюс» (+) означает сложение, символ «звездочка» (*) – умножение, а два символа «звездочка» (**) – возведение в степень:>>> 123 + 222# Целочисленное сложение345>>> 1.5 * 4# Умножение вещественных чисел6.0>>> 2 ** 100# 2 в степени 1001267650600228229401496703205376Обратите внимание на результат последней операции: в ���������������������Python��������������� 3.0 целые числа автоматически обеспечивают неограниченную точность для представлениябольших значений (в Python 2.6 для представления больших целых чисел имеется отдельный тип длинных целых чисел). Например, вы можете попробоватьвычислить 2 в степени 1 000 000 (но едва ли стоит это делать, так как на экранбудет выведено число длиной более 300 000 знаков, что может занять продолжительное время!).>>> len(str(2 ** 1000000)) # Сколько цифр в действительно БОЛЬШОМ числе?301030Начав экспериментировать с вещественными числами, вы наверняка обратитевнимание на то, что на первый взгляд может показаться странным:>>> 3.1415 * 2# repr: как программный код6.2830000000000004>>> print(3.1415 * 2) # str: более дружественный формат6.283Первый результат – это не ошибка, проблема здесь связана с отображением.Оказывается, вывести содержимое любого объекта можно двумя способами:с полной точностью (как в первом результате), и в форме, более удобной для восприятия человеком (как во втором результате).

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

Обсуждение этих типов будет приводиться далее в этойкниге.Пока что мы использовали Python как простой калькулятор, но чтобы иметьбольшую возможность судить о встроенных типах, перейдем к строкам.СтрокиСтроки используются для записи текстовой информации, а также произвольных последовательностей байтов. Это наш первый пример последовательностей, или упорядоченных коллекций других объектов, в языке Python. Последовательности поддерживают порядок размещения элементов, которые онисодержат, слева направо: элементы сохраняются и извлекаются исходя из ихпозиций в последовательностях. Строго говоря, строки являются последовательностями односимвольных строк. Другими типами последовательностейявляются списки и кортежи (будут описаны ниже).Операции над последовательностямиБудучи последовательностями, строки поддерживают операции, предполагающие определенный порядок позиционирования элементов. Например, еслиимеется четырехсимвольная строка, то с помощью встроенной функции lenможно определить ее длину, а отдельные элементы строки извлечь с помощьювыражений индексирования:>>>>>>4>>>‘S’>>>‘p’S = ‘Spam’len(S)# ДлинаS[0]# Первый элемент в S, счет начинается с позиции 0S[1]# Второй элемент слева127СтрокиВ языке Python индексы реализованы в виде смещений от начала и потомуиндексация начинается с 0: первый элемент имеет индекс 0, второй – 1 и такдалее.Обратите внимание, как в этом примере выполняется присваивание строкипеременной с именем S.

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

Но пока вам достаточно помнить – чтобы сохранить объект для последующего использования, его нужно присвоить переменной.В языке Python предусмотрена возможность индексации в обратном порядке,от конца к началу – положительные индексы откладываются от левого концапоследовательности, а отрицательные – от правого:>>> S[-1]‘m’>>> S[-2]‘a’# Последний элемент в конце S# Второй элемент с концаФормально отрицательные индексы просто складываются с длиной строки,поэтому следующие две операции эквивалентны (хотя первая форма записивыглядит проще и понятнее):>>> S[-1]‘m’>>> S[len(S)-1]‘m’# Последний элемент в S# Отрицательная индексация, более сложный способПримечательно, что внутри квадратных скобок допускается использовать нетолько жестко заданные числовые литералы, но и любые другие выражения –везде, где Python ожидает получить значение, можно использовать литералы,переменные или любые выражения.

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

Например:>>> S‘Spam’>>> S[1:3]‘pa’# Строка из 4 символов# Срез строки S начиная со смещения 1 и до 2 (не 3)Проще всего можно представить себе срез как способ извлечения целого столбца из строки за один шаг. В общем виде синтаксис операции получения срезавыглядит как: X[I:J], и означает: «извлечь из X все, начиная со смещения I и досмещения J, но не включая его». В качестве результата возвращается новыйобъект. Например, последняя операция из примера выше вернет все символыстроки S со смещениями с 1 по 2 (то есть 3 – 1 символов) в виде новой строки.В результате получается срез, или «выборка» двух символов из середины.128Глава 4. Введение в типы объектов языка PythonПри выполнении операции получения среза левая граница по умолчанию принимается равной нулю, а правая – длине последовательности, к которой применяется операция. В результате мы получаем следующие наиболее распространенные варианты использования:>>> S[1:]‘pam’>>> S‘Spam’>>> S[0:3]‘Spa’>>> S[:3]‘Spa’>>> S[:-1]‘Spa’>>> S[:]‘Spam’# Все, кроме первого элемента (1:len(S))# Сама строка S без изменений# Все, кроме последнего элемента# То же, что и S[0:3]# Еще раз все, кроме последнего элемента, но проще (0:-1)# Все содержимое S, как обычная копия (0:len(S))Обратите внимание, что в качестве границ срезов можно использовать отрицательные индексы и что последняя операция фактически создает копию всейстроки.

Как мы узнаем позднее, нет смысла копировать строки таким способом, но такая форма копирования очень удобна при работе с другими последовательностями, такими как списки.Наконец, будучи последовательностями, строки поддерживают операцию конкатенации, которая записывается в виде знака плюс (объединение двух строкв одну строку), и операцию повторения (новая строка создается за счет многократного повторения другой строки):>>> S‘Spam’>>> S + ‘xyz’# Конкатенация‘Spamxyz’>>> S# S остается без изменений‘Spam’>>> S * 8# Повторение‘SpamSpamSpamSpamSpamSpamSpamSpam’Обратите внимание, что знак плюс (+) имеет различное значение для разныхобъектов: для чисел – сложение, а для строк – конкатенация. Это универсальное свойство языка Python, которое далее в книге будет называться полиморфизмом, означает, что фактически выполняемая операция зависит от объектов, которые принимают в ней участие.

Как будет показано, когда мы приступим к изучению динамической типизации, такой полиморфизм в значительной степени обеспечивает выразительность и гибкость программного кода наязыке Python. Поскольку отсутствуют ограничения, связанные с типами, операции в языке Python обычно в состоянии автоматически обрабатывать объекты самых разных типов, при условии, что они поддерживают совместимый интерфейс (как в данном случае операция +). В языке Python идея полиморфизмаявляется ключевой концепцией, которую мы будем рассматривать далее в этойкниге.НеизменяемостьОбратите внимание: в предыдущих примерах ни одна из использованных операций не изменяла оригинальную строку. Все операции над строками в ре-129Строкизультате создают новую строку, потому что строки в языке Python являютсянеизменяемыми – после того, как строка будет создана, ее нельзя изменить.Например, вы не сможете изменить строку присвоением значения одной из еепозиций, но вы всегда можете создать новую строку и присвоить ей то же самоеимя.

Поскольку Python очищает память, занятую ненужными больше объектами (как будет показано позднее), такой подход не так уж неэффективен, какмогло бы показаться на первый взгляд:>>> S‘Spam’>>> S[0] = ‘z’# Неизменяемые объекты нельзя изменить...текст сообщения об ошибке опущен...TypeError: ‘str’ object does not support item assignment>>> S = ‘z’ + S[1:] # Но с помощью выражений мы можем создавать новые объекты>>> S‘zpam’Все объекты в языке Python либо относятся к классу неизменяемых, либо нет.Если говорить о базовых типах, то числа, строки и кортежи являются неизменяемыми, а списки и словари – нет (они легко могут изменяться в любой своейчасти).

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

Характеристики

Тип файла
PDF-файл
Размер
12,21 Mb
Тип материала
Высшее учебное заведение

Список файлов книги

Свежие статьи
Популярно сейчас
Почему делать на заказ в разы дороже, чем купить готовую учебную работу на СтудИзбе? Наши учебные работы продаются каждый год, тогда как большинство заказов выполняются с нуля. Найдите подходящий учебный материал на СтудИзбе!
Ответы на популярные вопросы
Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.
Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.
Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!
Да! На равне с готовыми студенческими работами у нас продаются услуги. Цены на услуги видны сразу, то есть Вам нужно только указать параметры и сразу можно оплачивать.
Отзывы студентов
Ставлю 10/10
Все нравится, очень удобный сайт, помогает в учебе. Кроме этого, можно заработать самому, выставляя готовые учебные материалы на продажу здесь. Рейтинги и отзывы на преподавателей очень помогают сориентироваться в начале нового семестра. Спасибо за такую функцию. Ставлю максимальную оценку.
Лучшая платформа для успешной сдачи сессии
Познакомился со СтудИзбой благодаря своему другу, очень нравится интерфейс, количество доступных файлов, цена, в общем, все прекрасно. Даже сам продаю какие-то свои работы.
Студизба ван лав ❤
Очень офигенный сайт для студентов. Много полезных учебных материалов. Пользуюсь студизбой с октября 2021 года. Серьёзных нареканий нет. Хотелось бы, что бы ввели подписочную модель и сделали материалы дешевле 300 рублей в рамках подписки бесплатными.
Отличный сайт
Лично меня всё устраивает - и покупка, и продажа; и цены, и возможность предпросмотра куска файла, и обилие бесплатных файлов (в подборках по авторам, читай, ВУЗам и факультетам). Есть определённые баги, но всё решаемо, да и администраторы реагируют в течение суток.
Маленький отзыв о большом помощнике!
Студизба спасает в те моменты, когда сроки горят, а работ накопилось достаточно. Довольно удобный сайт с простой навигацией и огромным количеством материалов.
Студ. Изба как крупнейший сборник работ для студентов
Тут дофига бывает всего полезного. Печально, что бывают предметы по которым даже одного бесплатного решения нет, но это скорее вопрос к студентам. В остальном всё здорово.
Спасательный островок
Если уже не успеваешь разобраться или застрял на каком-то задание поможет тебе быстро и недорого решить твою проблему.
Всё и так отлично
Всё очень удобно. Особенно круто, что есть система бонусов и можно выводить остатки денег. Очень много качественных бесплатных файлов.
Отзыв о системе "Студизба"
Отличная платформа для распространения работ, востребованных студентами. Хорошо налаженная и качественная работа сайта, огромная база заданий и аудитория.
Отличный помощник
Отличный сайт с кучей полезных файлов, позволяющий найти много методичек / учебников / отзывов о вузах и преподователях.
Отлично помогает студентам в любой момент для решения трудных и незамедлительных задач
Хотелось бы больше конкретной информации о преподавателях. А так в принципе хороший сайт, всегда им пользуюсь и ни разу не было желания прекратить. Хороший сайт для помощи студентам, удобный и приятный интерфейс. Из недостатков можно выделить только отсутствия небольшого количества файлов.
Спасибо за шикарный сайт
Великолепный сайт на котором студент за не большие деньги может найти помощь с дз, проектами курсовыми, лабораторными, а также узнать отзывы на преподавателей и бесплатно скачать пособия.
Популярные преподаватели
Добавляйте материалы
и зарабатывайте!
Продажи идут автоматически
6430
Авторов
на СтудИзбе
306
Средний доход
с одного платного файла
Обучение Подробнее