Наоми Седер - Python. Экспресс-курс
- Название:Python. Экспресс-курс
- Автор:
- Жанр:
- Издательство:Питер
- Год:2019
- ISBN:978-5-4461-0908-1
- Рейтинг:
- Избранное:Добавить в избранное
-
Отзывы:
-
Ваша оценка:
Наоми Седер - Python. Экспресс-курс краткое содержание
Наоми Седер рассказывает не только об основных особенностях языка Python, но и его объектно-ориентированных возможностях, которые появились в Python 3. Данное издание учитывает все изменения, которые произошли с языком за последние 5 лет, а последние 5 глав рассказывают о работе с большими данными.
Python. Экспресс-курс - читать онлайн бесплатно полную версию (весь текст целиком)
Интервал:
Закладка:
вы начнете определять собственные классы, различия между str и repr начинают играть важную роль (глава 15).
Зачем говорить об этом сейчас? Я хочу, чтобы вы знали, что вызов repr делает нечто большее, чем простой отладочный вывод ( print ). Возьмите в привычку использо-вать str вместо repr при создании строк для вывода информации — этот вариант предпочтителен по соображениям стиля программирования.
6.6. Использование метода format
Форматирование строк в Python 3 может осуществляться двумя способами. Бо-лее новый способ основан на использовании метода format класса строки. Метод format объединяет форматную строку, содержащую поля-заменители в фигурных скобках { } , со значениями, взятыми из параметров команды format . Если по-
требуется включить в строку литерал { или } , удвойте его ( {{ или }} ). Команда format предоставляет мощный мини-язык форматирования строк, дающий почти бесконечные возможности для управления форматированием строк. С другой стороны, в большинстве стандартных ситуаций он достаточно прост в использова-нии, поэтому в этом разделе будут рассмотрены некоторые шаблоны. Если же вам потребуются нетривиальные возможности, обращайтесь к разделу, посвященному форматированию строк, в документации стандартной библиотеки.
6.6.1. Метод format и позиционные параметрыПростой способ использования строкового метода format связан с заменой нуме-рованных полей, соответствующих параметрам, переданным функции format : >>> "{0} is the {1} of {2}".format("Ambrosia", "food", "the gods") 'Ambrosia is the food of the gods'
>>> "{{Ambrosia}} is the {0} of {1}".format("food", "the gods") '{Ambrosia} is the food of the gods'
Следует заметить, что метод format применяется к форматной строке, которая также может быть строковой переменной . Символы { } экранируются удваиванием, чтобы они не интерпретировались как признак поля-заменителя . Пример содержит три поля-заменителя — {0} , {1} и {2} , — которые последовательно заменяются первым, вторым и третьим параметрами. Где бы в форматной строке ни размещалось поле {0} , оно всегда замещается первым параметром, и т. д. Также можно использовать именованные параметры.
6.6.2. Метод format и именованные параметрыМетод format также распознает именованные параметры и поля замены: >>> "{food} is the food of {user}".format(food="Ambrosia", ... user="the gods")
'Ambrosia is the food of the gods'
В этом случае параметр выбирается по совпадению имени поля-заменителя с име-нем параметра, переданного команде format .
Допускается использование позиционных параметров вместе с именованными; в этих параметрах можно даже обращаться к атрибутам и элементам: >>> "{0} is the food of {user[1]}".format("Ambrosia", ... user=["men", "the gods", "others"])
'Ambrosia is the food of the gods'
В данном случае первый параметр является позиционным, тогда как обозначение user[1] относится ко второму элементу именованного параметра user .
6.6.3. Спецификаторы формата
Спецификаторы формата позволяют задать результат форматирования с еще большей точностью и широтой возможностей, чем форматные последовательности в старом стиле форматирования строк. Спецификатор формата позволяет задать символ-заполнитель, тип выравнивания, знак, ширину, точность и тип данных при подстановке на место поля-заменителя. Как упоминалось ранее, синтаксис специ-фикаторов формата представляет отдельный мини-язык, слишком сложный для того, чтобы полностью описывать его здесь. Тем не менее несколько примеров дадут вам представление о его возможностях:
>>> "{0:10} is the food of gods".format("Ambrosia") 'Ambrosia is the food of gods'
>>> "{0:{1}} is the food of gods".format("Ambrosia", 10) 'Ambrosia is the food of gods'
>>> "{food:{width}} is the food of gods".format(food="Ambrosia", width=10) 'Ambrosia is the food of gods'
>>> "{0:>10} is the food of gods".format("Ambrosia") ' Ambrosia is the food of gods'
>>> "{0:&>10} is the food of gods".format("Ambrosia") '&&Ambrosia is the food of gods'
:10 — спецификатор, который определяет поле шириной в 10 пробелов, дополня-емое пробелами . :{1} получает ширину из второго параметра . :>10 включает выравнивание поля по правому краю с дополнением пробелами . :&>10 включает выравнивание по правому краю с дополнением символами & вместо пробелов .
БЫСТРАЯ.ПРОВЕРКА:.МЕТОД.FORMAT()
Что будет содержать переменная x при выполнении следующих фрагментов кода?
x = "{1:{0}}".format(3, 4)
x = "{0:$>5}".format(3)
x = "{a:{b}}".format(a=1, b=5)
x = "{a:{b}}:{0:$>5}".format(3, 4, a=1, b=5, c=10)
6.7. Форматирование строк с символом %В этом разделе рассматривается форматирование строк с использованием опера-тора % . Этот оператор используется для объединения значений Python в отформа-тированные строки для печати или иного применения. Пользователи C отметят неожиданное сходство с семейством функций printf . Применение % для формати-рования строк относится к старому стилю форматирования, но я рассматриваю его здесь, потому что этот стиль считался стандартным в предыдущих версиях Python. Вы с большой вероятностью увидите его в коде, портированном из более ранних версий Python или написанном программистами, знакомыми с этими версиями. В новом коде этот стиль форматирования не должен использоваться, потому что он обречен на вымирание и в будущем будет удален из языка. Пример: >>> "%s is the %s of %s" % ("Ambrosia", "food", "the gods")'Ambrosia is the food of the gods'
Строковый оператор % (выделенный жирным шрифтом знак % в середине, а не три предшествующих экземпляра %s ) работает с двумя частями: в левой части разме-щается строка, а в правой кортеж. Оператор % ищет в левой строке специальные форматные последовательности и строит новую строку, заменяя эти форматные последовательности значениями из правой части. В этом примере форматными по-следовательностями в левой части являются три экземпляра %s , которые означают «Здесь вставляется строка».
При передаче разных значений в правой части будут получены разные строки: >>> "%s is the %s of %s" % ("Nectar", "drink", "gods") 'Nectar is the drink of gods'
>>> "%s is the %s of the %s" % ("Brussels Sprouts", "food", ... "foolish")
'Brussels Sprouts is the food of the foolish'
К элементам кортежа в правой части, соответствующим спецификаторам %s , авто-матически применяется str , так что они не обязаны быть строками: >>> x = [1, 2, "three"]
>>> "The %s contains: %s" % ("list", x)
"The list contains: [1, 2, 'three']"
6.7.1. Использование форматных последовательностейВсе форматные последовательности представляют собой подстроки, содержащиеся в строке в левой части от центрального оператора % . Каждая форматная последо-вательность начинается со знака % , и за ней следует один или несколько символов, которые показывают, что должно быть подставлено на место форматной последо-вательности и как должна выполняться подстановка. Форматная последователь-ность %s , использованная выше, является простейшей форматной последователь-ностью, она означает, что на место %s должна быть подставлена соответствующая строка из кортежа в правой части.
Возможны и другие, более сложные форматные последовательности. Следующая последовательность задает ширину поля (общее количество символов) выво-димого числа равной 6, задает количество символов в дробной части равным 2 и выравнивает число по левому краю в пределах поля. В следующем примере эта форматная последовательность заключается в угловые скобки, чтобы вы видели, где в форматной строке вставляются дополнительные пробелы: >>> "Pi is
Интервал:
Закладка: