Python中有多行和单行字符串字面值的优势是什么?

3

我知道三重引号字符串被用作文档字符串,但是否真的需要有两个字符串字面量呢?

在什么情况下区分单行和多行是有用的?

在Clojure中,我们只有一个字符串字面量,即多行字符串,我们将其用作文档字符串。那么为什么Python会有差异呢?

1个回答

2

需要明确创建多行字符串文字的优点可能最好通过示例来展示:

with open("filename.ext) as f:
    for line in f:
        print(line.upper())

当然,任何一个好的语法高亮编辑器都会捕获到这个错误,但是:
1. 并不总是使用语法高亮编辑器。 2. Python无法控制您使用的编辑器。
Python的两个设计原则是:
1. 错误不应该悄悄地通过。 2. 显式优于隐式。
在文档字符串之外,Python很少使用多行字符串,因此上面的例子更有可能出现(每个人都会犯错),而不是您想要一个多行字符串,但忘记通过三引号显式说明的情况。
这类似于Python对空格的使用,强制执行良好、一致的缩进规范意味着比例如括号分隔的语言更容易捕获错误。

当然,即使是StackOverflow也足够聪明,会将整个内容都标记为字符串 :) - undefined
任何曾花费数天时间追踪错误的人都非常关心那些发生在0.01%的情况下的事情。 - undefined
多行字符串在脚本中嵌入数据和代码时非常有用,比如用于doctests,就像这个经典的namedtuples示例中展示的那样。 - undefined
没有语法高亮是个大问题,真的很痛苦。所以我现在明白了,三引号实在太吵闹了,对我来说真的很烦人,以至于我正在编写一个Emacs扩展来解决这个问题。这让我想起了C语言中的三字符序列,在硬件标准化之前,如果你的键盘上没有特殊字符的话,就会用到它们。 - undefined
对于重要的空白或缩进规则,它也会隐藏错误,比如复制/粘贴、意外输入和删除或添加一些缩进。在任何分组语法()或"" []或{}或<>或其他情况下,我总是在打开后立即关闭它,以避免这些错误输入。当然,在处理他人的代码时,我可能会发现错误。 - undefined

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接