Python ma co najmniej sześć sposobów formatowania łańcucha:
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'
Krótka historia różnych metod:
printf
formatowanie w stylu istnieje od czasów dzieciństwa PythonaTemplate
Klasy wprowadzono 2,4 Pythonformat
Metodę wprowadzono 2,6 Pythonf
-strings zostały wprowadzone w Pythonie 3.6
Moje pytania to:
- Czy
printf
formatowanie w stylu jest przestarzałe, czy też zostanie wycofane? - W
Template class
, czysubstitute
metoda jest przestarzała, czy będzie przestarzała? (Nie mówię o tymsafe_substitute
, co, jak rozumiem, oferuje unikalne możliwości)
Podobne pytania i dlaczego uważam, że nie są duplikatami:
Formatowanie napisów w Pythonie:% vs. .format - traktuje tylko metody 1 i 2 i pyta, która z nich jest lepsza; moje pytanie wyraźnie dotyczy dezaprobaty w świetle Zen Pythona
Opcje formatowania napisów: plusy i minusy - traktuje tylko metody 1a i 1b w pytaniu, 1 i 2 w odpowiedzi, a także nic o deprecacji
zaawansowane formatowanie ciągów a ciągi szablonów - głównie o metodach 1 i 3 i nie dotyczy wycofywania
Wyrażenia formatujące łańcuchy (Python) - w odpowiedzi wspomniano, że pierwotne podejście „%” ma zostać wycofane . Ale jaka jest różnica między planowanym wycofaniem , oczekującym wycofaniem a faktycznym wycofaniem ? A
printf
metoda-style nie podnosi nawet aPendingDeprecationWarning
, więc czy to naprawdę będzie przestarzałe? Ten post jest również dość stary, więc informacje mogą być nieaktualne.
Formatter
zajęciach?