Python 至少有六种格式化字符串的方法:
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
-strings 是在 Python 3.6 中引入的
我的问题是:
- -style 格式是否
printf
已弃用或将被弃用? - 在
Template class
,substitute
方法是被弃用还是将被弃用?(我不是在谈论safe_substitute
,据我了解,它提供了独特的功能)
类似的问题以及为什么我认为它们不重复:
Python 字符串格式化:% 与 .format — 只处理方法 1 和 2,并询问哪个更好;我的问题是明确地根据 Python 的禅宗弃用
字符串格式化选项:优点和缺点- 仅处理问题中的方法 1a 和 1b,答案中的方法 1 和 2,也没有关于弃用
高级字符串格式化与模板字符串——主要是关于方法 1 和 3,并且不涉及弃用
字符串格式化表达式 (Python) — 答案提到计划弃用原始的 '%' 方法。但是计划弃用、待弃用和实际弃用之间有什么区别?而且
printf
-style 方法甚至不会引发 aPendingDeprecationWarning
,所以这真的会被弃用吗?这个帖子也很老了,所以信息可能已经过时了。