这两个字符串之间的区别?

The difference between these 2 strings?

我最近开始学习Python,希望您能帮我解决一个一直困扰我的问题。我一直在和 Learn Python The Hard Way 一起在线学习 Python。在练习 6 中,我遇到了一个问题,我在使用 %r 字符串格式化操作时产生了两个不同的字符串。当我打印一个字符串时,我得到了带有单引号 (' ') 的字符串。另一个我得到双引号(" ")。

代码如下:

x = "There are %d types of people." % 10
binary = "binary"
do_not = "don't"
y = "Those who know %s and those who %s." % (binary, do_not)

print "I said: %r." % x
print "I also said: %r." % y

第一个打印语句的结果:

I said: 'There are 10 types of people.'.

第二个打印语句的结果:

I also said: "Those who know binary and those who don't.".

我想知道为什么其中一个语句的结果带有单引号 (' ') 而另一个带有 (" ")。 ] P.S。我正在使用 Python 2.7.

%r 正在获取字符串的 repr 版本:

>>> x = 'here'
>>> print repr(x)
'here'

你看,单引号是常用的。但是,在 y 的情况下,字符串中有一个单引号(撇号)。好吧,通常定义对象的 repr 以便将其作为代码评估等于原始对象。如果 Python 使用单引号,则会导致错误:

>>> x = 'those who don't'
  File "<stdin>", line 1
    x = 'those who don't'
                   ^
SyntaxError: invalid syntax

所以它使用双引号代替。

注意这一行 -> do_not = "don't"。此字符串中有一个单引号,这意味着必须对单引号进行转义;否则 interpreter 会在哪里知道字符串 beganend 的位置? Python 知道用 "" 来表示这个字符串文字。

如果我们删除 ',那么我们可以期望字符串周围有一个单引号:

do_not = "dont"

>>> I also said: 'Those who know binary and those who dont.'.

Single vs. double quotes in python.