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

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

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

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

При этом вам не требуется использовать какой-либо специальный синтаксис, чтобы определить длинное целоечисло, а единственным признаком в версии 2.6, свидетельствующим, что используется длинное целое число, является завершающий символ L, которыйпоявляется при выводе таких чисел:>>> 999999999999999999999999999999 + 11000000000000000000000000000000LЦелые числа с неограниченной точностью – это достаточно удобный инструмент.

Например, с их помощью можно представить национальный бюджетв копейках (если вам это интересно и в вашем компьютере имеется достаточный объем памяти). Именно по этой причине нам удалось в примерах из главы 3 вычислить такую большую степень числа 2. Ниже приводятся примерыдля версий 3.0 и 2.6:>>> 2 ** 2001606938044258990275541962092341162602522202993782792835301376>>> 2 ** 2001606938044258990275541962092341162602522202993782792835301376LТак как интерпретатору приходится производить дополнительные действия,чтобы обеспечить поддержку высокой точности, с ростом значений целочисленные операции могут ощутимо замедляться.

Однако если высокая точностьважна, то фактор низкой производительности отходит на задний план.Комплексные числаКомплексные числа используются не так часто, как другие числовые типы,тем не менее, они также относятся к базовым типам данных в Python. Если вызнаете о существовании комплексных чисел, вы должны знать, когда они используются. В противном случае этот раздел можно пропустить.Комплексные числа состоят из двух вещественных чисел, представляющихдействительную и мнимую части, и в тексте программы отличаются наличиемсуффикса j, или J после мнимой части.

Если действительная часть не равнанулю, комплексное число записывается как сумма двух частей с помощью символа +. Например, комплексное число, действительная часть которого равна 2,а мнимая часть – -3, записывается как 2 + -3j.Ниже приводятся примеры некоторых действий над комплексными числами:>>> 1j * 1J(-1+0j)>>> 2 + 1j * 3(2+3j)>>> (2 + 1j) * 3(6+3j)Кроме того, комплексные числа позволяют обращаться к своим частям какк атрибутам, поддерживают все обычные математические операции и могутобрабатываться с помощью стандартного модуля cmath (версия модуля math,172Глава 5.

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

Правила записи литералов целых чисел рассматривались в начале этойглавы. Теперь рассмотрим несколько практических примеров.Имейте в виду, что это всего лишь альтернативный синтаксис задания значений целочисленных объектов. Например, следующие литералы создают обычные целые числа с заданными значениями:>>>(1,>>>(1,>>>(1,0o1, 0o20, 0o377# Восьмеричные литералы16, 255)0x01, 0x10, 0xFF# Шестнадцатеричные литералы16, 255)0b1, 0b10000, 0b11111111 # Двоичные литералы16, 255)Здесь восьмеричное значение 0o377, шестнадцатеричное значение 0xFF и двоичное значение 0b11111111 соответствуют десятичному значению 255.

По умолчанию интерпретатор Python выводит числа в десятичной системе счисления(по основанию 10), но предоставляет встроенные функции, которые позволяютпреобразовывать целые числа в последовательности цифр в других системахсчисления:>>> oct(64), hex(64), bin(64)(‘0o100’, ‘0x40’, ‘0b1000000’)Функция oct преобразует десятичное число в восьмеричное представление,функция hex – в шестнадцатеричное, а функция bin – в двоичное. Кроме того,существует возможность обратного преобразования – встроенная функция intпреобразует строку цифр в целое число.

Во втором необязательном аргументеона может принимать основание системы счисления:>>> int(‘64’), int(‘100’, 8), int(‘40’, 16), int(‘1000000’, 2)(64, 64, 64, 64)>>> int(‘0x40’, 16), int(‘0b1000000’, 2) # Допускается использовать литералы(64, 64)Функция eval, с которой мы встретимся далее в книге, интерпретирует строку во входном аргументе как программный код на языке Python. Поэтому онаможет воспроизводить похожий эффект. Правда, обычно она работает заметномедленнее, потому что ей приходится компилировать и выполнять строку какчасть программы, а это предполагает, что вы должны иметь безграничное доверие к источнику запускаемой строки, – достаточно грамотный пользовательмог бы подсунуть вашей программе строку, которая при выполнении в функции eval удалит все файлы на вашем компьютере!:Числа в действии173>>> eval(‘64’), eval(‘0o100’), eval(‘0x40’), eval(‘0b1000000’)(64, 64, 64, 64)Наконец, целые числа могут быть преобразованы в восьмеричное и шестнадцатеричное представления с помощью строкового метода форматированияи оператора форматирования строк:>>> ‘{0:o}, {1:x}, {2:b}’.format(64, 64, 64)‘100, 40, 1000000’>>> ‘%o, %x, %X’ % (64, 255, 255)‘100, ff, FF’Форматирование строк будет подробно рассматриваться в главе 7.Прежде чем двинуться дальше, считаю своим долгом сделать два замечания.Во-первых, пользователи Python 2.6 должны помнить, что литералы восьмеричных чисел в этой версии начинаются с одного нуля – это первоначальныйформат представления восьмеричных чисел в языке Python:>>>(1,>>>(1,0o1, 0o20, 0o377 # Новый формат восьмеричных литералов в 2.6 (как в 3.0)16, 255)01, 020, 0377# Прежний формат восьмеричных литералов в 2.616, 255)# (и в более ранних версиях)В версии 3.0 попытка выполнить второй пример приведет к ошибке.

Хотя в версии 2.6 такой синтаксис считается допустимым, не начинайте строки цифрс нуля, если вы не предполагаете использовать их в качестве восьмеричныхлитералов. В версии Python 2.6 такие строки будут восприниматься как числав восьмеричной системе счисления, что может не соответствовать вашим ожиданиям – число 010 всегда соответствует десятичному числу 8, а не десятичному 10 (независимо от того, что вы имели в виду!). Чтобы обеспечить непротиворечивость по аналогии с шестнадцатеричной и двоичной формами, восьмеричный формат был изменен в версии 3.0 – в версии 3.0 вы должны использоватьформу записи 0o010, и желательно этот же формат использовать в версии 2.6.Во-вторых, обратите внимание, что с помощью литералов можно создаватьцелые числа произвольной величины.

Например, ниже с помощью шестнадцатеричного литерала создается целое число, а затем выводится его значение,сначала в десятичном, затем в восьмеричном и, наконец, в двоичном представлениях:>>> X = 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF>>> X5192296858534827628530496329220095>>> oct(X)‘017777777777777777777777777777777777777’>>> bin(X)‘0b1111111111111111111111111111111111111111111111111111111111 ...и т.д.

...Раз уж разговор зашел о двоичных числах, рассмотрим теперь средства для работы с отдельными битами.Битовые операцииПомимо обычных числовых операций (сложение, вычитание и так далее) языкPython поддерживает большую часть видов числовых выражений, доступных174Глава 5. Числав языке C. Например, ниже приводится пример выполнения операций поразрядного сдвига и логических операций:>>>>>>4>>>3>>>1x = 1x << 2# 0001# Сдвиг влево на 2 бита: 0100x | 2# Побитовое ИЛИ: 0011x & 1# Побитовое И: 0001В первом выражении двоичное значение 1 (по основанию 2, 0001) сдвигаетсявлево на две позиции, в результате получается число 4 (0100).

В последних двухвыражениях выполняются двоичная операция ИЛИ (0001|0010 = 0011) и двоичная операция И (0001&0001 = 0001). Такого рода операции позволяют хранить сразу несколько флагов и других значений в одном целом числе.Это одна из областей, где поддержка двоичной и шестнадцатеричной форм записи чисел в Python 2.6 и 3.0 оказывается наиболее полезной, – она позволяетзаписывать и выводить числа в виде строк битов:>>> X = 0b0001>>> X << 24>>> bin(X << 2)‘0b100’# Двоичные литералы# Сдвиг влево>>> bin(X | 0b010)‘0b11’>>> bin(X & 0b1)‘0b1’# Битовая операция ИЛИ# Строка двоичных цифр# Битовая операция И >>> X = 0xFF# Шестнадцатеричные литералы>>> bin(X)‘0b11111111’>>> X ^ 0b10101010# Битовая операция ИСКЛЮЧАЮЩЕЕ ИЛИ (XOR)85>>> bin(X ^ 0b10101010)‘0b1010101’>>> int(‘1010101’, 2) # Преобразование изображения числа в число по основанию85>>> hex(85)# Вывод числа в шестнадцатеричном представлении‘0x55’Мы не будем здесь слишком углубляться в «жонглирование битами».

Вам покадостаточно знать, что битовые операции поддерживаются языком, и они могутпригодиться, когда вы будете иметь дело, например, с сетевыми пакетами илиупакованными двоичными данными, которые производятся программами наязыке C. Тем не менее вы должны понимать, что в языках высокого уровня,таких как Python, битовые операции не имеют такого большого значения, какв низкоуровневых языках, подобных языку C. Как правило, если у вас возникает желание использовать битовые операции в программах на языке Python,вам необходимо вспомнить, на каком языке вы программируете. В Python имеются гораздо лучшие способы представления информации, чем последовательности битов.175Числа в действииВ версии Python 3.1 у целых чисел появился новый метод bit_length, который возвращает количество битов, необходимых дляпредставления числа в двоичном виде.

Тот же результат можнополучить, уменьшив на 2 длину строки с двоичным представлением числа, воспользовавшись встроенной функцией len, с которой мы встречались в главе 4, однако этот способ работает менееэффективно:>>> X = 99>>> bin(X), X.bit_length()(‘0b1100011’, 7)>>> bin(256), (256).bit_length()(‘0b100000000’, 9)>>> len(bin(256)) - 29Другие встроенные средства для работы с числамиВ дополнение к этим базовым типам объектов Python предоставляет встроенные функции и модули для работы с числами.

Встроенные функции pow и abs,например, вычисляют степень и абсолютное значение числа соответственно.В следующем примере демонстрируется использование модуля math (которыйсодержит реализацию множества функций из библиотеки math языка C) и нескольких встроенных функций:>>> import math>>> math.pi, math.e(3.1415926535897931, 2.7182818284590451)# Распространенные константы>>> math.sin(2 * math.pi / 180)0.034899496702500969# Синус, тангенс, косинус>>> math.sqrt(144), math.sqrt(2)(12.0, 1.4142135623730951)# Квадратный корень>>> pow(2, 4), 2 ** 4(16, 16)# Возведение в степень>>> abs(-42.0), sum((1, 2, 3, 4))(42.0, 10)# Абсолютное значение, сумма>>> min(3, 1, 2, 4), max(3, 1, 2, 4)(1, 4)# Минимум, максимумФункция sum, которая демонстрируется здесь, принимает последовательностьчисел, а функции min и max могут принимать либо последовательность чисел,либо множество отдельных аргументов. Существует множество способов округления десятичных знаков в вещественных числах.

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

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

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

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