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中引入的
我的问题是:
- 是否
printf
不赞成使用-style格式? - 在中
Template class
,该substitute
方法是否已弃用或将要弃用?(我不是在谈论safe_substitute
,据我所知它提供了独特的功能)
类似的问题以及为什么我认为它们不是重复的:
Python字符串格式:%vs.format —仅处理方法1和2,并询问哪种方法更好;我的问题明确地是关于Python Zen的弃用
字符串格式选项:优点和缺点 -仅处理问题中的方法1a和1b,答案中的方法1和2,也不考虑弃用
高级字符串格式与模板字符串的比较 -主要是关于方法1和3的,并且不解决弃用问题
字符串格式表达式(Python) -答案提到计划不推荐使用原始的'%'方法。但是,计划要弃用,待定弃用和实际弃用之间有什么区别?而且
printf
-style方法甚至不会引发PendingDeprecationWarning
,所以这真的会被弃用吗?该帖子也很旧,因此信息可能已过时。
Formatter
课程吗?