Python tiene al menos seis formas de formatear una cadena:
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'
Una breve historia de los diferentes métodos:
printf
el formato de estilo ha existido desde la infancia de Pythons- La
Template
clase se introdujo en Python 2.4 - El
format
método se introdujo en Python 2.6 f
-las cadenas se introdujeron en Python 3.6
Mis preguntas son:
- ¿El
printf
formato de estilo está obsoleto o va a quedar obsoleto? - En el
Template class
, ¿elsubstitute
método está obsoleto o va a quedar obsoleto? (No estoy hablando de losafe_substitute
que, según tengo entendido, ofrece capacidades únicas)
Preguntas similares y por qué creo que no son duplicados:
Formato de cadena de Python:% vs. .format : trata solo los métodos 1 y 2, y pregunta cuál es mejor; mi pregunta es explícitamente sobre la desaprobación a la luz del Zen de Python
Opciones de formato de cadena: pros y contras : trata solo los métodos 1a y 1b en la pregunta, 1 y 2 en la respuesta, y tampoco nada sobre la desaprobación
formato de cadena avanzado frente a cadenas de plantilla , principalmente sobre los métodos 1 y 3, y no aborda la obsolescencia
Expresiones de formato de cadena (Python) : la respuesta menciona que se planea que el enfoque original '%' sea obsoleto . Pero, ¿cuál es la diferencia entre la desaprobación planificada , la desaprobación pendiente y la desaprobación real ? Y el
printf
método -style no genera ni siquiera aPendingDeprecationWarning
, entonces, ¿realmente va a quedar obsoleto? Esta publicación también es bastante antigua, por lo que la información puede estar desactualizada.
Formatter
clase?