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

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

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

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

В общем виде синтаксис использования спецификатора форматавыглядит следующим образом:%[(name)][flags][width][.precision]codeСимвол спецификатора формата (code) из табл. 7.4 располагается в самом конце. Между символом % и символом спецификатора можно добавлять следующую информацию: ключ в словаре (name); список флагов (flags), которые могутопределять, например, признак выравнивания (-), знак числа (+), наличие ведущих нулей (0); общую ширину поля и число знаков после десятичной точкии многое другое.

Параметры формата width и precision могут также приниматьзначение *, чтобы показать, что фактические значения этих параметров должны извлекаться из следующего элемента в списке входных значений.Полное описание синтаксиса спецификаторов формата вы найдете в стандартном руководстве по языку Python, а сейчас для демонстрации наиболее типичных случаев их использования приведем несколько примеров. В первом примере сначала применяется форматирование целого числа с параметрами поумолчанию, а затем целое число выводится в поле шириной в шесть символов,с выравниванием по левому краю и с дополнением ведущими нулями:>>> x = 1234>>> res = “integers: ...%d...%-6d...%06d” % (x, x, x)>>> res‘integers: ...1234...1234 ...001234’Спецификаторы %e, %f и %g отображают вещественные числа разными способами, как демонстрируется в следующем примере:>>> x = 1.23456789>>> x1.2345678899999999>>> ‘%e | %f | %g’ % (x, x, x)‘1.234568e+00 | 1.234568 | 1.23457’>>> ‘%E’ % x‘1.234568E+00’Для вещественных чисел можно реализовать дополнительные эффекты форматирования, указав необходимость выравнивания по левому краю, дополнениеведущими нулями, знак числа, ширину поля и число знаков после десятичнойточки.

Для простых задач можно было бы использовать простые функции преобразования чисел в строки с применением выражения форматирования иливстроенной функции str, продемонстрированной ранее:>>> ‘%-6.2f | %05.2f | %+06.1f’ % (x, x, x)‘1.23 | 01.23 | +001.2’238Глава 7. Строки>>> “%s” % x, str(x)(‘1.23456789’, ‘1.23456789’)Если ширина поля и количество знаков после десятичной точки заранее не известны, их можно вычислять во время выполнения, а в строке формата вместофактических значений использовать символ *, чтобы указать интерпретатору,что эти значения должны извлекаться из очередного элемента в списке входных значений, справа от оператора %. Число 4 в кортеже определяет количествознаков после десятичной точки:>>> ‘%f, %.2f, %.*f’ % (1/3.0, 1/3.0, 4, 1/3.0)‘0.333333, 0.33, 0.3333’Если вас заинтересовала эта особенность, поэкспериментируйте самостоятельно с этими примерами, чтобы получить более полное представление.Форматирование строк из словаряОперация форматирования позволяет также использовать в спецификаторахформата ссылки на ключи словаря, который указывается в правой части выражения, для извлечения соответствующих значений.

Мы пока немного говорили о словарях, поэтому следующий пример демонстрирует самый простойслучай:>>> “%(n)d %(x)s” % {“n”:1, “x”:”spam”}‘1 spam’В данном случае (n) и (x) в строке формата ссылаются на ключи в словаре в правой части выражения и служат для извлечения соответствующих им значений.

Этот прием часто используется в программах, создающих код разметкиHTML или XML, – вы можете построить словарь значений и затем подставитьих все одним выражением форматирования, которое использует ключи:>>> reply = “””# Шаблон с замещаемыми спецификаторами форматаGreetings...Hello %(name)s!Your age squared is %(age)s“””>>> values = {‘name’: ‘Bob’, ‘age’: 40}# Подготовка фактических значений>>> print reply % values# Подстановка значенийGreetings...Hello Bob!Your age squared is 40Этот способ также часто используется в комбинации со встроенной функциейvars, которая возвращает словарь, содержащий все переменные, существующие на момент ее вызова:>>> food = ‘spam’>>> age = 40>>> vars(){‘food’: ‘spam’, ‘age’: 40, ...и еще множество других...

}Если задействовать эту функцию в правой части оператора форматирования,можно отформатировать значения, обращаясь к ним по именам переменных(то есть по ключам словаря):Метод форматирования строк239>>> “%(age)d %(food)s” % vars()‘40 spam’Словари во всех подробностях мы будем изучать в главе 8. А в главе 5 вы найдете примеры использования спецификаторов %x и %o для преобразования значений в шестнадцатеричное и восьмеричное строковое представление.Метод форматирования строкКак уже упоминалось выше, в ���������������������������������������������Python��������������������������������������� 2.6 и 3.0 появился новый способ форматирования строк, более близкий по духу к идеям языка Python. В отличие отвыражений форматирования, метод форматирования не так сильно опираетсяна модель функции «�������������������������������������������������������printf�������������������������������������������������» языка C и имеет более подробный и явный синтаксис.

С другой стороны, новый способ по-прежнему опирается на некоторые концепции функции «printf», такие как символы и параметры спецификаторовформата. Кроме того, возможности метода форматирования в значительнойстепени пересекаются с возможностями выражений форматирования (иногда,правда, за счет большего объема программного кода) и могут выполнять стольже сложные операции форматирования. Вследствие этого сложно сказать, какой из двух способов лучше, поэтому для большинства программистов совсемне лишним будет знакомство с обоими.ОсновыВ двух словах, новый метод format объектов строк, появившийся в версиях 2.6и 3.0 (и выше), использует строку, относительно которой он вызывается, какшаблон и принимает произвольное количество аргументов, представляющихзначения для подстановки.

Фигурные скобки внутри строки шаблона используются для обозначения замещаемых спецификаторов и их параметров,которые могут определять порядковые номера позиционных аргументов (например, {1}) или имена именованных аргументов (например, {food}). В главе 18вы узнаете, что аргументы могут передаваться функциям и методам в виде позиционных и именованных аргументов, а язык Python��������������������������������������������������предоставляет возможность создавать функции и методы, способные принимать произвольное количество позиционных и именованных аргументов.

Ниже приводится несколькопримеров использования метода format в Python 2.6 и 3.0:>>> template = ‘{0}, {1} and {2}’ # Порядковые номера позиционных аргументов>>> template.format(‘spam’, ‘ham’, ‘eggs’)‘spam, ham and eggs’>>> template = ‘{motto}, {pork} and {food}’# Имена именованных аргументов>>> template.format(motto=’spam’, pork=’ham’, food=’eggs’)‘spam, ham and eggs’>>> template = ‘{motto}, {0} and {food}’# Оба варианта>>> template.format(‘ham’, motto=’spam’, food=’eggs’)‘spam, ham and eggs’Естественно, строка шаблона также может быть литералом, кроме того, сохраняется возможность подстановки значений объектов любых типов:>>> ‘{motto}, {0} and {food}’.format(42, motto=3.14, food=[1, 2])‘3.14, 42 and [1, 2]’240Глава 7.

СтрокиКак и при использовании оператора форматирования % и других строковых методов, метод format создает и возвращает новый объект строки, который можно тут же вывести на экран или сохранить для последующего использования(не забывайте, что строки являются неизменяемыми объектами, поэтому метод format вынужден создавать новый объект). Возможность форматированиястрок может использоваться не только для их отображения:>>> X = ‘{motto}, {0} and {food}’.format(42, motto=3.14, food=[1, 2])>>> X‘3.14, 42 and [1, 2]’>>> X.split(‘ and ‘)[‘3.14, 42’, ‘[1, 2]’]>>> Y = X.replace(‘and’, ‘but under no circumstances’)>>> Y‘3.14, 42 but under no circumstances [1, 2]’Использование ключей, атрибутов и смещенийКак и оператор форматирования %, метод format обладает дополнительнымивозможностями. Например, в строках формата допускается ссылаться на имена атрибутов объектов и ключи словарей, – как и в привычном синтаксисеязыка ������������������������������������������������������������������Python������������������������������������������������������������, квадратные скобки обозначают ключи словаря, а точка применяется для организации доступа к атрибутам объектов, на которые ссылаютсяпозиционные или именованные спецификаторы.

В первом примере ниже демонстрируется подстановка значения ключа «������������������������������spam��������������������������» словаря и значения атрибута «platform» объекта импортированного модуля sys, которые передаютсякак позиционные аргументы. Во втором примере делается то же самое, но наэтот раз объекты для подстановки передаются в виде именованных аргументов:>>> import sys>>> ‘My {1[spam]} runs {0.platform}’.format(sys, {‘spam’: ‘laptop’})‘My laptop runs win32’>>> ‘My {config[spam]} runs {sys.platform}’.format(sys=sys,config={‘spam’: ‘laptop’})‘My laptop runs win32’В квадратных скобках в строках формата можно также указывать смещениеот начала списка (или любой другой последовательности), но при этом допускается использовать только положительные смещения, поэтому данная возможность не является достаточно универсальной, как можно было бы подумать.Как и в операторе %, чтобы обратиться по отрицательному смещению, получитьсрез или вставить результат произвольного выражения, данные для подстановки должны быть подготовлены отдельными выражениями, за пределами строки формата:>>> somelist = list(‘SPAM’)>>> somelist[‘S’, ‘P’, ‘A’, ‘M’]>>> ‘first={0[0]}, third={0[2]}’.format(somelist)‘first=S, third=A’Метод форматирования строк241>>> ‘first={0}, last={1}’.format(somelist[0], somelist[-1]) # Если [-1]‘first=S, last=M’ # использовать внутри строки формата, это приведет к ошибке>>> parts = somelist[0], somelist[-1], somelist[1:3] # Если [1:3]>>> ‘first={0}, last={1}, middle={2}’.format(*parts) # использовать внутри“first=S, last=M, middle=[‘P’, ‘A’]” # строки формата, это приведет к ошибкеСпециальные приемы форматированияЕще одно сходство с оператором форматирования % состоит в том, что за счет использования дополнительных синтаксических конструкций форматированияимеется возможность выполнять более точное форматирование.

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

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

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

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