Python には、文字列をフォーマットする少なくとも 6 つの方法があります。
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
スタイルの書式設定は、Python の初期段階から存在しています。- この
Template
クラスは Python 2.4 で導入されました - この
format
メソッドは Python 2.6 で導入されました f
- 文字列は Python 3.6 で導入されました
私の質問は次のとおりです。
- スタイルの書式設定は非推奨ですか
printf
、または非推奨になりますか? - で
Template class
、substitute
メソッドは非推奨ですか、または非推奨になりますか?safe_substitute
(私が理解しているように、独自の機能を提供するについては話していません)
同様の質問と、それらが重複していないと思う理由:
Python 文字列の書式設定: % と .format — 方法 1 と 2 のみを扱い、どちらが優れているかを尋ねます。私の質問は、Zen of Python に照らして非推奨であることを明確に示しています
文字列の書式設定オプション: 長所と短所— 質問では方法 1a と 1b、回答では方法 1 と 2 のみを扱い、非推奨については何も扱いません
高度な文字列フォーマットとテンプレート文字列— 主に方法 1 と 3 に関するものであり、廃止予定については触れていません
文字列書式設定式 (Python) —元の '%' アプローチは非推奨になる予定であることが回答に記載されています。しかし、計画された非推奨、保留中の非推奨、実際の非推奨の違いは何ですか? そして、
printf
-style メソッドは a さえ発生させないPendingDeprecationWarning
ので、これは本当に非推奨になるのでしょうか? この記事もかなり古いので、情報が古くなっている可能性があります。