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

时间:2015-03-12 20:12:31

标签: python string quotes double-quotes

在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开发人员决定了这些:

  • 为什么有两种方法引用字符串?
  • 为什么要用表示包含引号的字符串的特定逻辑?毕竟它使doctests之类的东西更难写。

1 个答案:

答案 0 :(得分:5)

Python试图给出字符串repr的最“自然”表示。

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

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