Главная » Просмотр файлов » Марк Лутц - Изучаем Python, Четвертое издание

Марк Лутц - Изучаем Python, Четвертое издание (1184811), страница 43

Файл №1184811 Марк Лутц - Изучаем Python, Четвертое издание (Марк Лутц - Изучаем Python, Четвертое издание) 43 страницаМарк Лутц - Изучаем Python, Четвертое издание (1184811) страница 432020-08-21СтудИзба
Просмтор этого файла доступен только зарегистрированным пользователям. Но у нас супер быстрая регистрация: достаточно только электронной почты!

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

ЧислаНапример, если вы запишете выражение X + Y * Z, интерпретатор Python сначала выполнит умножение (Y * Z), а затем прибавит результат к значению X,потому что оператор * имеет более высокий приоритет (в табл. 5.2 он находитсяниже), чем оператор +. Точно так же в первом примере этого раздела сначалабудут найдены произведения (A * B и C * D), а затем будет выполнено сложение.Группировка подвыражений с помощью круглых скобокВы можете навсегда забыть о старшинстве операторов, если будете группировать части выражений с помощью круглых скобок. Когда часть выражения заключается в круглые скобки, они отменяют правила старшинства операторов –Python всегда в первую очередь вычисляет подвыражения в круглых скобках,а затем использует их результаты в объемлющем выражении.Например, выражение X + Y * Z можно записать одним из следующих способов, чтобы вынудить Python произвести вычисления в требуемом порядке:(X + Y) * ZX + (Y * Z)В первом случае сначала будет выполнено сложение значений X и Y, потому чтоэто подвыражение заключено в круглые скобки.

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

Если вам уже приходилосьиспользовать язык C, вы найдете, что такое поведение соответствует порядкупреобразования типов в этом языке.Интерпретатор Python ранжирует сложность числовых типов следующим образом: целые числа проще, чем вещественные числа, которые проще комплексных чисел. Поэтому, когда в выражении участвуют целое число и вещественное число, как в предыдущем примере, то целое число сначала будет преобразовано в вещественное число, а затем будет выполнена операция из математикивещественных чисел, что дает в результате вещественное число.

Точно так же,когда один из операндов в выражении является комплексным числом, другойоперанд будет преобразован в комплексное число и выражение вернет в результате также комплексное число. (Кроме того, в Python 2.6 обычные целые числапреобразуются в длинные целые, если значение не может быть представленов виде обычного целого числа; в версии 3.0 все целые числа попадают в категорию длинных целых.)Базовые числовые типы161Существует возможность принудительного преобразования типов с помощьювстроенных функций:>>> int(3.1415) # Усекает дробную часть вещественного числа3>>> float(3)# Преобразует целое число в вещественное3.0Однако в обычных ситуациях делать это не приходится, потому что Python автоматически выполняет преобразование типов и тип результата, как правило,соответствует вашим ожиданиям.Кроме того, имейте в виду, что все эти преобразования производятся толькопри смешивании числовых типов (то есть целых и вещественных чисел) в выражении, включая выражения, выполняющие математические операциии операции сравнения.

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

В версии 3.0 сравнивание разнотипных нечисловыхзначений не допускается и приводит к исключению.Обзор: перегрузка операторов и полиморфизмНесмотря на то, что сейчас в центре нашего внимания находятся встроенныечисла, вы должны знать, что в языке Python существует возможность выполнить (то есть реализовать) перегрузку любого оператора с помощью классовPython или расширений на языке C для работы с создаваемыми объектами.Например, как будет показано позже, объекты, реализованные в виде классов,могут участвовать в операции сложения, индексироваться с помощью выражения [i] и так далее.Кроме того, Python сам автоматически перегружает некоторые операторы, чтобы с их помощью можно было выполнять различные действия, в зависимостиот типа встроенных объектов.

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

Мы еще вернемсяк этому понятию в главе 16, когда будем рассматривать функции, потому чтов этом контексте суть полиморфизма становится более очевидной.162Глава 5. ЧислаЧисла в действииПриступим к программированию! Самый лучший способ понять числа и выражения состоит в том, чтобы увидеть их в действии, поэтому давайте запустим интерактивный сеанс работы с интерпретатором и попробуем выполнитьнекоторые простые, но весьма показательные операции (если вы забыли, какзапускается интерактивный сеанс, обращайтесь к главе 3).Переменные и простые выраженияПрежде всего, рассмотрим основные арифметические операции.

Для началаприсвоим двум переменным (a и b) целочисленные значения, чтобы потом использовать их в более сложных выражениях. Переменные – это всего лишьимена, создаваемые в языке Python, которые используются для обозначенияинформации в программах. Об этом мы будем говорить более подробно в следующей главе, а пока вы должны знать, что в языке Python:•• Переменные создаются с помощью операции присваивания.•• При вычислении выражений имена переменных замещаются их значениями.•• Прежде чем переменная сможет участвовать в выражениях, ей должнобыть присвоено значение.•• Переменные являются ссылками на объекты и никогда не объявляются заранее.Другими словами, следующие операции присваивания автоматически приводят к созданию переменных a и b:% python>>> a = 3>>> b = 4# Создается имяЗдесь я также использовал комментарий. Вспомните, что в программном кодена языке Python текст, следующий за символом #, считается комментариеми игнорируется интерпретатором.

Комментарии – это один из способов описатьпрограммный код на удобном для восприятия языке. Поскольку программныйкод, который пишется в ходе интерактивного сеанса, является временным,вам не требуется писать комментарии, я же буду добавлять их в примеры, чтобы объяснять работу программного кода.1 В следующей части книги мы познакомимся с еще одной похожей особенностью – со строками документирования,которые включают текст комментариев в объекты.А теперь попробуем использовать наши первые целочисленные объекты в выражениях.

В настоящий момент переменные a и b все еще имеют значения 3 и 4соответственно. Когда переменные, подобные этим, участвуют в выражении,они замещаются их значениями, а при работе в интерактивном режиме результат вычисления выражения тут же выводится на экран:1Если вы пробуете примеры на практике, вам не нужно вводить текст, начинающийсяс символа # и продолжающийся до конца строки; комментарии просто игнорируютсяинтерпретатором и не являются необходимой частью инструкций, которые мы выполняем.163Числа в действии>>> a + 1, a(4, 2)>>> b * 3, b(12, 2.0)>>> a % 2, b(1, 16)>>> 2 + 4.0,(6.0, 16.0)- 1# Сложение (3 + 1), вычитание (3 - 1)/ 2# Умножение (4 * 3), деление (4 / 2)** 2# Деление по модулю (остаток), возведение в степень2.0 ** b # Смешивание типов, выполняется преобразованиеС технической точки зрения результатами этих инструкций являются кортежи,состоящие из двух значений, потому что вводимые строки содержат по два выражения, разделенные запятыми.

Именно по этой причине результаты отображаются в круглых скобках (подробнее о кортежах будет рассказываться позднее).Следует заметить, что эти выражения выполняются без ошибок потому, что ранее переменным a и b были присвоены значения. Если использовать переменную,которой еще не было присвоено значение, Python выведет сообщение об ошибке:>>> c * 2Traceback (most recent call last):File “<stdin>”, line 1, in ?NameError: name ‘c’ is not definedВ языке Python от вас не требуется заранее объявлять переменные, но преждечем их можно будет использовать, им должны быть присвоены некоторые значения. На практике это означает, что перед тем как к счетчикам можно будетприбавлять некоторые значения, их необходимо инициализировать нулевымзначением; прежде чем к спискам можно будет добавлять новые элементы, ихнеобходимо инициализировать пустыми списками, и так далее.Ниже приводятся два более сложных выражения, чтобы проиллюстрироватьпорядок выполнения операторов и производимые преобразования:>>> b / 2 + a# То же, что и ((4 / 2) + 3)5.0>>> print(b / (2.0 + a)) # То же, что и (4 / (2.0 + 3))0.8В первом выражении отсутствуют круглые скобки, поэтому интерпретаторPython автоматически группирует компоненты выражения в соответствиис правилами определения старшинства – оператор / находится ниже в табл. 5.2,чем оператор +, поэтому его приоритет считается выше и он выполняется первым.

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

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

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

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