字符串格式化表达式

未匹配的标注

虽然可以用之前学过的字符串方法和序列操作来完成许多工作,但 Python 还提供了一个更高级的方法来结合字符串处理任务 —— 字符串格式化允许一次性对一个字符串指向多个特定类型的替换。它从不是严格要求的,但会很方便,特别是当给程序用户显示格式化文本时。由于 Python 世界中有大量新点子,字符串格式化在今天的 Python 中有两种可用的风格(不考虑在前一节中提到的 string 模块的 Template 系统):

字符串格式化表达式:'...%s...' % (values)

​ 从 Python 创建之初的原有技术,这个形式基于 C 语言的 “printf” 模型,而且在许多现存代码中可以看到广泛的使用。

字符串格式化方法调用:'...{}...'.format(values)

​ 在 Python 2.6 和 3.0 中增添的更新的技术,这个形式部分起源于 C#/.NET 中的同名工具,且和字符串格式化表达式的功能有重叠。

因为方法调用的风格更新,随着时间的推移,其中一个或另一个可能会被弃用或移除。当 3.0 在 2008 年被发布时,表达式看起来更可能在随后的 Python 版本中被弃用。真的,3.0 的文档威胁 3.1 中将被弃用且之后将移除。但这在 2013 和 3.3 版本中还未发生,且现在考虑到表达式的广泛使用,这看起来是不太可能的 —— 事实上,即使在今天,字符串格式化表达式仍在 Python 的自身标准库中出现成千上万次。

很自然,历史的发展取决于 Python 用户的未来实践。另一方面,因为表达式和方法在今天都是有效的,且都可能出现在将遇到的代码中,本书在这里完整地讲述了两种技术。看到的:这两个方法在很大程度上是同一个主题的变体,虽然方法有一些额外的特性(如千分位分隔符),而且表达式通常更简洁且似乎更被大多数程序员所熟悉。

本书为说明问题,在随后的例子中使用了两种技术。如果它的作者有偏好,在很大程度上将保密,除了引用 Python 的 import this 格言:

应该有一个 —— 最好只有一个 —— 明显的方法来做

除非新的字符串格式化方法令人信服地比原来的广泛使用的表达式更好,它对 Python 程序员在这个领域的知识库的双倍要求看起来是没有必要的 —— 而且根据 Python 的原来和长期以来的含义,它甚至不那么 Python 了。如果这些工具在很大程度上重叠,那么程序员不应该必须学习两个复杂的工具。当然,必须自己判断格式化是否值得(自己去学习)增加的语言负担,所以都来公平地看一下。

本文章首发在 LearnKu.com 网站上。

上一篇 下一篇
讨论数量: 0
发起讨论 只看当前版本


暂无话题~