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

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

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

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

Строки>>> ‘{:,.2f}’.format(296999.2567)‘296,999.26’Официально в этой книге не рассматривается версия 3.1, поэтому данное примечание следует рассматривать только как предварительное. Дополнительно в версии Python���������������������������������������� 3.1 будут ликвидированы основные проблемы производительности, наблюдающиеся в версии 3.0, связанные с файловыми операциями ввода/вывода, и делающие версию �������������������������������3.0 ���������������������������непривлекательной����������для���������������боль�����шинства применений. Дополнительные подробности вы найдетев примечаниях к выпуску 3.1. Ознакомьтесь также со сценариемformats.py в главе 24, где вы найдете приемы добавления запятых и форматирования денежных сумм вручную, которые можно использовать, пока не вышла в свет версия Python 3.1.Когда может пригодиться новый метод format?Теперь, когда я потратил столько слов, чтобы сравнить и противопоставить дваспособа форматирования, я должен объяснить, когда может пригодиться метод format.

В двух словах: несмотря на то, что использование метода форматирования требует вводить больше программного кода, тем не менее:•• Он обладает некоторыми особенностями, отсутствующими в операторе форматирования %•• Позволяет более явно ссылаться на аргументы•• Вместо символа оператора используется более говорящее имя метода•• Не различает случаи, когда выполняется подстановка одного или нескольких значенийНа сегодняшний день доступны оба приема, и оператор форматирования попрежнему находит широкое применение, тем не менее метод format в конечномитоге может вытеснить его.

Но пока у вас есть выбор, поэтому, прежде чем двинуться дальше, подробнее остановимся на некоторых отличиях.Дополнительные возможностиМетод format поддерживает дополнительные возможности, недоступные прииспользовании оператора %, такие как отображение чисел в двоичном форматеи (появившаяся в Python 3.1) возможность разделения групп разрядов. Крометого, метод format позволяет напрямую обращаться к ключам словарей и атрибутам объектов в строке формата. Однако, как мы уже видели, при использовании оператора % того же эффекта можно добиться другими способами:>>> ‘{0:b}’.format((2 ** 16) -1)‘1111111111111111’>>> ‘%b’ % ((2 ** 16) -1)ValueError: unsupported format character ‘b’ (0x62) at index 1>>> bin((2 ** 16) -1)‘0b1111111111111111’>>> ‘%s’ % bin((2 ** 16) -1)[2:]‘1111111111111111’247Метод форматирования строкСмотрите также примеры в предыдущем разделе, где проводилось сравнениеспособов, основанных на использовании ключей словаря в операторе % и ссылок на атрибуты объектов в методе format, которые в значительной степени выглядят, как вариации на одну и ту же тему.Неявные ссылки на значенияОдин из случаев, когда реализация на основе метода format выглядит более понятной, – подстановка большого количества значений в строку формата.

Так,в примере lister.py, который приводится в главе 30, выполняется подстановкашести значений в одну строку формата; в этом случае метки {i} в вызове методаformat читаются проще, чем спецификаторы %s в выражении форматирования:‘\n%s<Class %s, address %s:\n%s%s%s>\n’ % (...)# Выражение‘\n{0}<Class {1}, address {2}:\n{3}{4}{5}>\n’.format(...) # МетодС другой стороны, использование ключей словаря в операторе % позволяетв значительной степени ликвидировать эту разницу. Кроме того, этот случайможно отнести к наиболее сложным случаям форматирования, которые редко встречаются на практике, – в более типичных случаях выбор между двумя способами форматирования больше напоминает жеребьевку.

Кроме того,в версии Python 3.1 (когда писалась эта глава, она находилась еще в состоянииальфа-версии) допускается не указывать порядковые номера позиционных аргументов, что несколько снижает преимущества метода format:C:\misc> C:\Python31\python>>> ‘The {0} side {1} {2}’.format(‘bright’, ‘of’, ‘life’)‘The bright side of life’>>>>>> ‘The {} side {} {}’.format(‘bright’, ‘of’, ‘life’)# Python 3.1+‘The bright side of life’>>>>>> ‘The %s side %s %s’ % (‘bright’, ‘of’, ‘life’)‘The bright side of life’Использование возможности автоматической нумерации в версии 3.1, какв данном примере, снижает преимущества метода format. А если сравнить операции форматирования, например, вещественных чисел, можно заметить, чтовыражение с оператором % по-прежнему получается более компактным и выглядит менее запутанным:C:\misc> C:\Python31\python>>> ‘{0:f}, {1:.2f}, {2:05.2f}’.format(3.14159, 3.14159, 3.14159)‘3.141590, 3.14, 03.14’>>>>>> ‘{:f}, {:.2f}, {:06.2f}’.format(3.14159, 3.14159, 3.14159)‘3.141590, 3.14, 003.14’>>>>>> ‘%f, %.2f, %06.2f’ % (3.14159, 3.14159, 3.14159)‘3.141590, 3.14, 003.14’Имя метода и универсальные аргументыУчитывая появление в версии 3.1 возможности автоматической нумерациипараметров, единственными потенциальными преимуществами метода format248Глава 7.

Строкиостаются замена оператора % более говорящим названием метода и отсутствиеразличий между операциями с заменой единственного или нескольких значений. Первое из этих преимуществ может заинтересовать начинающих программистов (слово «format» в тексте программы распознается проще, чем множествосимволов «%»), хотя это слишком субъективно.Последнее преимущество может оказаться более существенным – при использовании оператора форматирования % единственное значение можно указать непосредственно, но когда необходимо передать несколько значений, онидолжны быть заключены в кортеж:>>> ‘%.2f’ % 1.2345‘1.23’>>> ‘%.2f %s’ % (1.2345, 99)‘1.23 99’С технической точки зрения, оператор форматирования принимает один объект – либо само значение для подстановки, либо кортеж с одним или болееэлементами.

Фактически из-за того, что единственный элемент может передаваться либо сам по себе, либо внутри кортежа, когда возникает необходимостьотформатировать кортеж, он должен быть оформлен, как вложенный кортеж:>>> ‘%s’ % 1.23‘1.23’>>> ‘%s’ % (1.23,)‘1.23’>>> ‘%s’ % ((1.23,),)‘(1.23,)’Метод format, напротив, ликвидирует различия между этими двумя случаями,принимая одни и те же аргументы:>>> ‘{0:.2f}’.format(1.2345)‘1.23’>>> ‘{0:.2f} {1}’.format(1.2345, 99)‘1.23 99’>>> ‘{0}’.format(1.23)‘1.23’>>> ‘{0}’.format((1.23,))‘(1.23,)’Из всего вышесказанного можно сделать вывод, что метод format удобнее дляначинающих программистов и меньше способствует появлению ошибок программирования. Однако эту проблему нельзя признать существенной – есливсегда заключать значения в кортеж и не пользоваться возможностью прямойпередачи единственного значения, оператор % по сути становится похожим наметод format.

Кроме того, из-за ограниченной гибкости метода его использование приводит к увеличению объема программного кода, и учитывая, что оператор форматирования широко использовался на протяжении всей историиразвития ����������������������������������������������������������������Python����������������������������������������������������������, пока не ясно, насколько оправданно переводить существующий программный код на использование нового инструмента, о чем мы поговорим в следующем разделе.Возможный отказ в будущем?Как уже упоминалось выше, существует определенный риск, что в будущемразработчики языка Python могут объявить оператор % нерекомендуемым,Общие категории типов249в пользу метода format. Фактически о такой возможности явно говоритсяв справочном руководстве для версии Python 3.0.Конечно, этого пока не произошло, и оба способа форматирования доступны безкаких-либо ограничений в версиях �����������������������������������������Python����������������������������������� 2.6 и 3.0 (версии, которые рассматриваются в данной книге).

Поддержка обоих способов сохранится и в приближающемся выпуске Python 3.1, поэтому отказ от какого-либо из них выглядитдостаточно маловероятным в обозримом будущем. Кроме того, благодаря тому,что оператор форматирования широко используется практически во всех существующих программах на языке Python, большинству программистов будетполезно знать оба способа.Однако если в будущем оператор форматирования будет объявлен нерекомендуемым, вам может потребоваться переписать все выражения с оператором %,заменив их вызовами метода format, и преобразовать выражения, которые приводятся в этой книге, чтобы перейти на использование более новой версии ���Python.

Рискуя показаться тенденциозным, я, тем не менее, полагаю, что такоеизменение будет основано на предпочтениях практикующих программистов,а не по прихоти ограниченной группы основных разработчиков – особенноесли учесть, что теперь окно для проникновения новых несовместимостей в ���Python 3.0 уже закрыто. Откровенно говоря, такой отказ от одного из способоввыглядел бы как замена одной сложности другой, которая в значительной степени эквивалентна заменяемой! Тем не менее если вас волнует вопрос миграции на будущие версии Python, обязательно старайтесь следить за событиямив разработке.Общие категории типовТеперь, когда мы исследовали строки, первый объект из коллекции языкаPython, сделаем паузу, чтобы дать определение некоторым общим концепциям, применимым к большинству типов, которые будут рассматриваться дальше. Оказывается, что операции над встроенными типами работают одинаковов случае применения их к типам одной категории, поэтому нам необходимолишь определить эти категории.

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

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

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

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