为什么 Python 根据内容使用不同的引号来表示字符串?

Why does Python use different quotes for representing strings depending on their content?

在 Python 2.7 中,我注意到 repr(s)s 是一个字符串)行为因 s 的内容而异。

我的意思是:

In [1]: print repr("John's brother")
"John's brother"

In [2]: print repr("system")
'system'

请注意两种情况下的不同引号类型。

从我的测试看来,每当 s 包含一个 ' 字符时,表示的字符串都会用 " 引用 除非 字符串还包含一个(转义的)" 字符。

这是我的意思的一个例子:

In [3]: print repr("foo")
'foo'

In [4]: print repr("foo'")
"foo'"

In [5]: print repr("foo'\"")
'foo\'"'

现在我明白这没有什么区别,因为 repr 不提供任何关于确切输出格式的保证,但我很好奇 Python 开发人员为什么决定这些事情:

Python 尝试给出它正在 repr-ing 的字符串的最多 "natural" 表示。

因此,例如,如果字符串包含 ',它将使用 ",因为 "that's the ticket" 看起来比 'that\'s the ticket' 更好。

实际上有四种引用字符串的方法:单引号——'"——以及三引号——"""'''。之所以有这四种方法,是因为能够自然地编写字符串而无需转义其中的内容会更好。