Python tem pelo menos seis maneiras de formatar uma string:
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'
Uma breve história dos diferentes métodos:
printf
a formatação de estilo existe desde a infância de Pythons- A
Template
classe foi introduzida em Python 2.4 - O
format
método foi introduzido no Python 2.6 f
-strings foram introduzidos no Python 3.6
Minhas perguntas são:
- A
printf
formatação -style está obsoleta ou será obsoleta? - No
Template class
, osubstitute
método foi descontinuado ou será descontinuado? (Não estou falando sobre osafe_substitute
que, pelo que entendi, oferece recursos únicos)
Perguntas semelhantes e por que acho que não são duplicatas:
Formatação de string Python:% vs. .format - trata apenas os métodos 1 e 2 e pergunta qual é o melhor; minha pergunta é explicitamente sobre a depreciação à luz do Zen do Python
Opções de formatação de string: prós e contras - trata apenas dos métodos 1a e 1b na pergunta, 1 e 2 na resposta e também nada sobre depreciação
formatação de string avançada versus strings de modelo - principalmente sobre os métodos 1 e 3, e não aborda a suspensão de uso
Expressões de formatação de string (Python) - a resposta menciona que a abordagem original '%' está planejada para ser descontinuada . Mas qual é a diferença entre planejado para ser obsoleto , pendente depreciação e real depreciação ? E o
printf
método -style não gera nem mesmo aPendingDeprecationWarning
, então isso realmente será obsoleto? Este post também é bastante antigo, então as informações podem estar desatualizadas.
Formatter
aula?