【发布时间】:2018-03-10 14:43:49
【问题描述】:
我最近看了一个 Python 教程,其中作者一直在玩各种 Python 字符串格式化表达式,我被一个想法打动了:
为什么 Python 中有这么多字符串格式化风格?
- 有基于 C 语言
printf的方法(顺便说一下,在各种来源中,该方法被引用为已弃用并计划删除,但标准 Python 文档中有大量示例 (!))。李> - 另一方面,有
C#派生的.format()处理字符串的方式。 - 最后,随着 Python 3.6 的出现,我们得到了
formatted f-string literal,即f-string。 - 有些还包括
string模块,但这对我来说似乎有点过头了。
我发现here,根据用途,上述前两种技术既不同又相互重叠。
最后但并非最不重要的一点是,这种丰富的方法是否与 Python 在import this 中的声明之一相矛盾?
应该有一种——最好只有一种——明显的方法。
如果我错了,请纠正我,但这在某种程度上本质上是“非 Pythonic”。
读者是否会就此提出他们的想法,最好用一些相关的例子来支持?
【问题讨论】:
-
这是一种进化。旧的方法被认为是不够的,因此发明了新的方法。 Python 的口头禅不应该禁止进步和改进。
-
prinf已被弃用,我从不知道它存在。 -
它们不是同时介绍的。离得很远。我认为向后兼容性非常重要
-
f"…"使用了和.format()相同的格式字符串,所以实际上只有两种格式字符串。引入.format后的初衷是要弃用 %-formatting,但那并没有发生。 (这很好。) -
默认情况下向 Unicode 的转变反映了行业内更广泛的运动。一方面,Java 采用了它,这有助于巩固标准。对于 3.6,这是唯一的方法,将 2-3.6 视为过渡期。
标签: python python-3.x string-formatting