Автор оригинала: Shubham Sayon.
Резюме: F-string
более читабелен и проще реализовать, чем %
и .Format ()
Струнные форматирования стилей. Кроме того, используя F-струны
Предлагается для Python 3.6 и выше, пока .Format ()
лучше всего подходит для Python 2.6 и выше. Версии до Python 2.6 только предоставляют %
Опция для форматирования строки. С точки зрения скорости %
это самый быстрый стиль форматирования строки.
Обзор
Проблема: Сравните различные стили форматирования строки в Python I.e. %
Против .Format ()
VS Форматированная строка литерала/ F-струны
Отказ
Обзор решения : Существует 4 способа форматирования строки в Python в настоящее время. Эти
%
форматированиеstr.format ()
F-string
(Строковая буквальная)- Шаблонные строки
Пример: Давайте посмотрим на следующий пример, где мы использовали все четыре способа форматирования строки:
from string import Template name = "FINXTERS!" print('1. Hello %s' % name) print('2. Hello {}'.format(name)) print(f"3. Hello {name}") temp = Template("4. Hello $name") print(temp.substitute(name=name))
Выход
1. Hello FINXTERS! 2. Hello FINXTERS! 3. Hello FINXTERS! 4. Hello FINXTERS!
Итак, из приведенного выше примера мы видим, что все типы форматирования строки создают одинаковый выход. Сказав это, у нас сейчас есть много вопросов для решения. Некоторые из этих вопросов включают в себя:
- В чем разница между каждым методом форматирования строки?
- Какой метод форматирования строки должен быть предпочтительным, и в какой ситуации он должен быть предпочтительным?
Чтобы узнать больше о использовании каждого форматирования строки Python, следуйте этим руководству в блоге. Однако в этой статье мы узнаем и в первую очередь сосредоточиваемся на ключевых различиях между первыми тремя методами форматирования строки, как упомянуты в нашем заявлении о проблеме. Без дальнейшей задержки давайте погрузимся в ключевые различия.
Перед тем, как погрузиться глубже в эти методы, давайте сделаем его придерживаться этого быстрого упражнения:
Упражнение : Добавьте вторую строковую переменную имя и вставьте его в каждый выход!
Разница синтаксиса
В следующей таблице изображена разница в синтаксисе между каждым способом форматирования строки:
% форматирования | str.format () | F-струны |
Синтаксис:% переменная | Синтаксис: .format (value1, value2 …) | Синтаксис: F ” |
Пример: Печать (‘1. Здравствуйте% S’% Name) | Пример: Печать (‘2. Здравствуйте {}’. Формат (имя)) | Пример: Печать (F’3. Hello {name} ‘) |
Версия и разница в совместимости
В следующей таблице изображена разница между каждым стилем форматирования строки с точки зрения их совместимости в разных версиях Python.
% форматирования | str.format () | F-струны |
1. Введен в первоначальном / первом выпуске Python. | 1. Введен в Python 2.6. | 1. Введен в Python 3.6. |
2. Может использоваться в любой версии Python. Однако это не рекомендуемый стиль форматирования строки для Python 2.6 и выше. | 2. Его можно использовать в Python 2.6 и выше. Однако он будет поднять синтаксическую ошибку при использовании в версиях до Python 2.6. | 2. Может использоваться только в Python 3.6 и выше. Он повысит ошибку синтаксиса, если используется в версиях до Python 3.6 |
Функциональная разница
% форматирования | str.format () | F-струны |
% – это оператор, известный как оператор Modulo, который позволяет нам форматировать строковый объект в Python. | Это встроенный метод, который позволяет нам отформатировать строковый объект в Python. | F-string – это буквальная строка в Python, с «F» в качестве префикса и содержит выражения внутри брекетов. |
Комплексный синтаксис и может принимать переменную или кортеж. Пожалуйста, посмотрите на пример 1, приведенный ниже, чтобы получить лучшее представление об этой концепции. | Будучи новым и улучшенным стилем форматирования строки, он более универсален и прост в использовании, чем%. Он имеет более простой синтаксис и использует аналогичный синтаксис, необходимо ли вам принять строковую переменную или кортеж. Пожалуйста, посмотрите на пример 1, приведенный ниже, чтобы получить лучшее представление об этой концепции. | Он использует еще более простой синтаксис с момента .Format () может быть утомительным, особенно при использовании с длинными строками. Пожалуйста, посмотрите на пример 1, приведенный ниже, чтобы получить лучшее представление об этой концепции. Это более мощный вариант форматирования строки на учетную запись, что позволяет нам встраивать выражения в самой строке. Пожалуйста, посмотрите на пример 2, приведенный ниже, чтобы получить лучшее представление об этой концепции. |
Давайте сравним Строковые форматированные стили Основываясь на их простоте реализации, используя несколько примеров:
Пример 1.
name = 'Finxter Shubham' tup = (1, 2, 3) # Different syntax for printing a string and tuple print("Name: %s" % name) print("Tuple: %s" % (tup,)) # same syntax to print both string and tuple print("Name: {}".format(name)) print("Tuple: {}".format(tup)) # even more readable and easier syntax print(f'Name: {name}') print("Tuple: " f'{tup}')
Выход
Name: Finxter Shubham Tuple: (1, 2, 3) Name: Finxter Shubham Tuple: (1, 2, 3) Name: Finxter Shubham Tuple: (1, 2, 3)
F-струны
привести к чищему коду, потому что их синтаксис позволяет размещать значение выражения непосредственно внутри строки. В следующем примере показано, как легко встроить выражения внутри F-струны
:
Пример 2.
# The number of units per player units = {} units['Alice'] = 10 units['Bob'] = 15 x = 'Alice' y = 'Bob' print(f'{x} has {units["Bob"] - units["Alice"]} units less than {y}')
Выход
Alice has 5 units less than Bob
Чтобы узнать, как вы можете выполнить вышеуказанную работу в .Format ()
Строковый способ форматирования – кликните сюда!
► Теперь давайте посмотрим на пример, который изображает, как легко мы можем использовать позиционные Аргументы В случае .Format ()
и F-струны
Но насколько отвратительно становится при этом одинаковое использование %
форматирование.
Пример 3.
tu = (100, 500, 300) print('{0} {2} {1}'.format(*tu)) print(f'{tu[0]}, {tu[2]}, {tu[1]}') # using % formatting print('%(a)s %(c)s %(b)s' % {'a': 100, 'b': 500, 'c': 300})
Выход
100 300 500 100, 300, 500 100 300 500
► Еще одно преимущество новых методов форматирования строки по %
Форматирование строки: – Новые стили могут взять объект свойства тогда как %
не может сделать это. Давайте посмотрим на следующий код, чтобы увидеть принцип работы за этой концепцией:
class Finxter(object): def __init__(self, a, b): self.x = a self.y = b a = Finxter(2, 3) print("\nUsing .format():") print('Value1 = {0}\nValue2 = {1}'.format(a.x, a.y)) print("\nUsing f-string:") print(f'Value1={a.x}\nValue2={a.y}') print("\nNot possible using %")
Выход
Using .format(): Value1 = 2 Value2 = 3 Using f-string: Value1=2 Value2=3 Not possible using %
Разница скорости/производительности
Хотя скорость и производительность не являются основными метриками, когда речь идет о форматировании строки, но мы должны обсудить разницу между ними с точки зрения производительности, поскольку может возникнуть редкая ситуация, когда скорость также является критерием в программе.
Давайте посмотрим на следующую программу, чтобы узнать, кто выигрывает гонку с точки зрения скорости:
import timeit print('.format() Speed:', timeit.timeit("'{}{}{}'.format(0.5, 1.5, 'SPEED TEST!')")) print('% Speed:', timeit.timeit("'%s%s%s' % (0.5, 1.5, 'SPEED TEST!')")) print('f-string Speed:', timeit.timeit("f'{0.5}{1.5}{\"SPEED TEST!\"}'"))
Выход
.format() Speed: 1.615438 % Speed: 1.2333532999999999 f-string Speed: 1.2435527000000004
Поэтому мы видим, что %
(модуль) Строкольный форматирующий стиль выигрывает гонку производительности!
Используйте случай, который соответствует определенному стилю форматирования строки
Из вышеперечисленных обсуждений мы можем легко вывести следующее:
- Если вы используете любую версию до Python 2.6 Stick со старым
%
(модуль) Строкольный способ форматирования. - Если вы используете Python 2.6 или выше, а затем используете
.Format ()
Строковый способ форматирования – лучший вариант. - Если вы используете Python 3.6 или выше, лучший вариант для форматирования строки –
F-string
Отказ
Если вы запутались в отношении версии Python, на которой вы работаете, вы можете взглянуть на это руководство.
Вывод
В этой статье мы обсудили ключевые различия между %
ул. Формат
() и F-струны
на основе многочисленных факторов вместе со своими примерами. Я надеюсь, что после прочтения этой статьи вы можете сравнить и сопоставить различия между каждым стилем форматирования строки. Хотя примеры, используемые в вышеуказанной статье, являются очень базовыми (для лучшего занижения концепции), одинаковые контрасты также проводятся в случае сложных ситуаций.
Если вам понравилось прочитать эту статью, пожалуйста, подпишитесь и оставайтесь настроенными для более интересных статей!
Куда пойти отсюда?
Достаточно теории, давайте познакомимся!
Чтобы стать успешным в кодировке, вам нужно выйти туда и решать реальные проблемы для реальных людей. Вот как вы можете легко стать шестифункциональным тренером. И вот как вы польские навыки, которые вам действительно нужны на практике. В конце концов, что такое использование теории обучения, что никто никогда не нуждается?
Практические проекты – это то, как вы обостряете вашу пилу в кодировке!
Вы хотите стать мастером кода, сосредоточившись на практических кодовых проектах, которые фактически зарабатывают вам деньги и решают проблемы для людей?
Затем станьте питоном независимым разработчиком! Это лучший способ приближения к задаче улучшения ваших навыков Python – даже если вы являетесь полным новичком.
Присоединяйтесь к моему бесплатным вебинаре «Как создать свой навык высокого дохода Python» и посмотреть, как я вырос на моем кодированном бизнесе в Интернете и как вы можете, слишком от комфорта вашего собственного дома.
Присоединяйтесь к свободному вебинару сейчас!
Я профессиональный Python Blogger и Content Creator. Я опубликовал многочисленные статьи и создал курсы в течение определенного периода времени. В настоящее время я работаю полный рабочий день, и у меня есть опыт в областях, таких как Python, AWS, DevOps и Networking.
Вы можете связаться со мной @: