У Python є щонайменше шість способів форматування рядка:
In [1]: world = "Earth"
# method 1a
In [2]: "Hello, %s" % world
Out[2]: 'Hello, Earth'
# method 1b
In [3]: "Hello, %(planet)s" % {"planet": world}
Out[3]: 'Hello, Earth'
# method 2a
In [4]: "Hello, {0}".format(world)
Out[4]: 'Hello, Earth'
# method 2b
In [5]: "Hello, {planet}".format(planet=world)
Out[5]: 'Hello, Earth'
# method 2c
In [6]: f"Hello, {world}"
Out[6]: 'Hello, Earth'
In [7]: from string import Template
# method 3
In [8]: Template("Hello, $planet").substitute(planet=world)
Out[8]: 'Hello, Earth'
Коротка історія різних методів:
printf
Форматування стилю існує вже з дитинства пітонівTemplate
Клас був введений в Python 2.4format
Метод був введений в Python 2.6f
-вряди були введені в Python 3.6
Мої запитання:
- Чи
printf
застаріле форматування формату або буде застарілим? - У
Template class
, чи єsubstitute
метод застарілим або буде застарілим? (Я не кажу про теsafe_substitute
, що, як я розумію, пропонує унікальні можливості)
Подібні запитання, і чому я вважаю, що вони не копії:
Форматування рядків Python:% vs. .format - обробляє лише методи 1 та 2 та запитує, який із них краще; моє запитання явно стосується знецінення у світлі дзен Питона
Параметри форматування рядків: плюси і мінуси - розглядає лише методи 1а та 1б у запитанні, 1 і 2 у відповіді, а також нічого про депресію
розширене форматування рядків проти рядків шаблону - переважно про методи 1 і 3, і не стосується застарілості
Вирази форматування рядків (Python) - відповідь згадує, що початковий підхід '%' планується застаріти . Але яка різниця між плануваним припиненням , очікуванням анулювання та фактичним припиненням ? І
printf
метод -style не піднімає навіть аPendingDeprecationWarning
, це справді буде застарілим? Ця публікація також досить стара, тому інформація може бути застарілою.
Formatter
клас?