Muitas formas de formatação de strings do Python - as mais antigas (vão ser) obsoletas?
O 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
formatação em estilo já existe desde a infância de PythonsoTemplate
classe foi introduzida no Python 2.4oformat
método foi introduzido no Python 2.6f
-strings foram introduzidas no Python 3.6Minhas perguntas são:
Éprintf
formatação em estilo obsoleta ou que vai ficar obsoleta?NoTemplate class
, é osubstitute
método depreciado ou vai ser preterido? (Eu não estou falando sobresafe_substitute
que, no meu entender, oferece recursos únicos)Perguntas semelhantes e por que acho que não são duplicatas:
Formatação de string do 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 de Python
Opções de formatação de strings: prós e contras - trata apenas os métodos 1a e 1b na pergunta, 1 e 2 na resposta, e também nada sobre a depreciação
formatação avançada de string versus strings de modelo - principalmente sobre os métodos 1 e 3, e não aborda a depreciação
Expressões de formatação de string (Python) - resposta menciona quea abordagem original '%' está planejada para ser preterida. Mas qual a diferença entreplanejado para ser preterido, pendência suspensa e realdeprecação? E aprintf
método de estilo não aumenta mesmo umPendingDeprecationWarning
, isso é realmente vai ser preterido? Este post também é bastante antigo, então a informação pode estar desatualizada.
Veja também PEP 502: Interpolação de Cadeias - Discussão Extendida