Автор оригинала: Mike Driscoll.
Python 3.6 добавил еще один способ сделать строку подстановки, что они называют «форматированными строковыми литералами». Вы можете прочитать все о концепции в PEP 498 Отказ Я принимаю немного зону здесь, в том, что дзен Питона утверждает, что Должно быть один- и предпочтительнее только один -обязательный способ сделать это Отказ Теперь Python имеет три способа. Давайте прогуляемся вниз по переулке памяти, прежде чем мы поговорим о последнем способе поиграния со строками.
Ye Olde Струнная замена
Когда Python впервые начал, они последовали C ++ так, как они сделали строку подстановки с помощью % s,% я и тому подобное. Вот пара примеров:
Второй пример выше демонстрирует, как отформатировать число в поплавок с точностью, установленным на 2 десятичных знака. Этот метод строкового замещения также поддерживает аргументы ключевых слов:
Синтаксис немного странный, и я всегда должен посмотреть на это, чтобы правильно работать.
Хотя эти методы строкового замещения все еще поддерживаются, был изобретен новый метод, который должен был быть более понятным и более функциональным. Давайте посмотрим, как это выглядит:
Я думал, что это было довольно умное новое дополнение. Однако в том, что вы сможете на самом деле использовать аргументы ключевых слов, чтобы указать, что идет, где находится в строке подстановки:
Это довольно круто и на самом деле довольно полезно. Вы увидите некоторые программисты, которые будут спорить, по сравнению с тем, какой метод должен быть предпочтительным. Я видел некоторые даже утверждаю, что оригинальный метод на самом деле быстрее, чем новее, если вы делаете много строковых замен. Независимо от того, это дает вам краткий взгляд на старый способ делать вещи. Посмотрим, что нового!
Использование форматированных строковых литералов
Начиная с Python 3.6, мы получаем отформатированные строковые литералы или F-строку. Синтаксис для форматированной струны литерала немного отличается от того, что мы видели ранее:
Давайте немного сломаемся. Первое, что мы делаем, это определить переменную, которую мы хотим вставлять в строку. Далее мы хотим сказать Python, который мы хотим создать отформатированную строку литерату. Для этого мы подготовим нашу строку буквой «F». Это означает, что строка будет отформатирована. Окончательный кусок очень похож на наш последний пример из предыдущего раздела, в том, что нам просто нужно вставить наше имя переменной в строку с парой вьющих скобок вокруг него. Затем Python делает немного магии, и мы получаем распечатанную новую строку. Это на самом деле совсем похоже на некоторые языки для шаблонов Python, таких как Mako.
F-string также поддерживает определенные типы преобразований, таких как STR () через ‘! S’ и Rep () через ‘! R’. Вот обновленный пример:
Отметим, что изменение на выходе довольно тонко в том, что все, что было добавлено, это несколько кавычек вокруг переменной, которая была вставлена. Давайте посмотрим на что-то более сложное, а именно числа плавающих точек!
Здесь мы импортируем десятичный модуль Python и создать экземпляр, который представляет собой общий газ. Затем мы настроили ширину строки, чтобы быть 10 символами, а точность, чтобы быть 4. Наконец мы говорим F-String для форматирования его для нас. Как видите, вставленный текст имеет некоторую прокладку на передней части, чтобы сделать его шириной 10 символов, а точность в основном устанавливает его на 4, что усеяло 5 вместо округления.
Упаковка
Новая форматужная строка литерала или F-строки на самом деле не добавляет ничего нового для форматирования строк. Однако это заявлено быть более гибким и менее подверженным ошибкам, чем предыдущие методы. Я настоятельно рекомендую прочитать документацию и PEP 498, чтобы помочь вам встать на скорость на этой новой функции, чтобы вы могли определить, есть ли так, как вы будете делать строковую замену в будущем.
Связанное чтение
- Что нового в Python 3.6
- PEP 498 – Литеральная струнная интерполяция
- Новый в Python: Синтаксис для вариабельных аннотаций
- Новый в Python: Подчеркивает числовые литералы